`
jiao13953900900
  • 浏览: 32137 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

黑马程序员-IO流如何创建文件

    博客分类:
  • java
 
阅读更多

---------------------- android培训java培训、期待与您交流! ----------------------

 

 

黑马程序员-IO流如何创建文件

 

 

 

 

 

 

 

 

IO流创建一个文件

流的概念和作用

流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。 

 

IO流用来操作设备间的数据传输,

Java对数据的操作是通过流的方式实现的。

IO流的分类

根据处理数据类型的不同分为:字符流和字节流

字节流的抽象基类:InputStream,OutputStream。

字符流的抽象基类:Reader,Writer。

根据数据流向不同分为:输入流和输出流

字符流和字节流

字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。 

字节流和字符流的区别:

读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。

处理对象不同:字节流能处理所有类型的数据(如图片、avi、mp3等),而字符流只能处理字符类型的数据。

结论:只要是处理纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流。

 

 

输入流和输出流

对输入流只能进行读操作,对输出流只能进行写操作,程序中需要根据待传输数据的不同特性而使用不同的流。

 

 

我们要用流对数据进行操作,首先我们要先有流,可以根据我们要操作的文件的类型进行选择使用的对象。

例如,我们要操作一个文本对象,创建一个名为hello.txt的文本文件,将“hello,java”存入到该文件中。

根据 题意我们知道,要操作的 是一个文本对象, 要使用到的是Writer类,在java帮助文档api中我们可以知道 ,Writer是一个抽象类,那么我们可以找找看Writer有没有子类可以实现对文本文件的操作,

我们会找到在Writer的子类中有一个专门用来操作文本对象 的子类FileWriter,那么,我们要先创建一个FileWriter类的对象,

FileWriter fr=new FileWriter("hello.txt");

我们根据给定的文件名创建一个FileWriter的对象,该对象一被初始化就必须要明确被操作文件,如果指定目录下不存在该文件的同名文件,则会创建一个新的文件,如果该文件名已经存在,那么原有的同名文件将会被创建的覆盖。

在FileWriter类中有一些从Writer类中继承过来的方法,在这里我们可以直接拿过来使用。

Write();该方法是用来写入数据,在Writer类中有很多重载的witer方法,可以实现多种数据类型的操作,如单个字符,字符数组,字符串等。

flush();该方法是用来刷新数据的,将写入的流中的数据刷新到文件中。

close():该方法是用来关闭流资源的,该方法有一个特点,就是在关闭流之前进行一次刷新操作,其底层就是调用的flush方法。因为关闭资源的操作是必须要执行的,所以将其代码放到finally中。

 

 

具体代码如下:

 

 

import java.io.*;

class IO

{

public static void main(String[] args)

{

FileWriter fw=null;

try

{

fw=new FileWriter("hello.txt");

fw.write("hello,java");

fw.flush();

}

catch(IOException e)

{

throw new RuntimeException("写入失败");

}

finally

{

try

{

if(fw != null)

fw.close();

}

catch(IOException e)

{

throw new RuntimeException("关闭失败");

}

}

}

}

 

 

若是已经有了一个文件,要对文件进行续写,一额可以用这种方法实现,只是创建刘对象的时候要进行区分,在FileWriter类中有多个构造方法

public FileWriter(String fileName, boolean append)

           throws IOException根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。 

 

参数:

fileName - 一个字符串,表示与系统有关的文件名。

append - 一个 boolean 值,如果为 true,则将数据写入文件末尾处,而不是写入文件开始处。

如下面的例子,将abc续写到hello.txt的结尾处。

 

import java.io.*;

class IO5

{

public static void main(String[] args)

{

FileWriter fw=null;

try

{

fw=new FileWriter("hello.txt",true);

fw.write("abc");

fw.flush();

}

catch(IOException e)

{

throw new RuntimeException("写入失败");

}

finally

{

try

{

if(fw != null)

fw.close();

}

catch(IOException e)

{

throw new RuntimeException("关闭失败");

}

}

}

}






---------------------- android培训java培训、期待与您交流! ----------------------
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics