IO流常用基类
字节流的抽象基类:InputStream,OutputStream
字符流的抽象基类:Reader,Writer
由这四个基类派生的子类名称以父类名作为子类的后缀,以操作的对象作为前缀。例如:FileInputStream,FileOutputStream,FileReader,FileWriter.......
数据的最常见体现方式是文件
下面是一个FileWriter类的实例:
import java.io.*; class FileWriterDemo{ public static void main(String args[]){ FileWriter fw = null; //创建一个FileWriter引用 try{ //将引用指向一个新的FileWriter对象,该对象一旦被初始化就必须制定要被操作的文件 //如果文件不制定目录 将会被创建默认的目录中,并将其原有的同名文件覆盖 fw = new FileWriter("FileWriterDemo.txt"); //调用write方法,将字符串写入流中 fw.write("Hello World"); //fw.flush(); //刷新流对象缓冲区的数据,将数据写入文件中 }catch(IOException e){ e.printStackTrace(); }finally{ try{ if(fw!=null) //关闭资源,但关闭之前会刷新一次缓冲区的数据,并将数据写入文件。 fw.close(); }catch(IOException e){ e.printStackTrace(); } } } }
其中此例中有对IOException异常的捕获处理,首先先创建一个引用而不是直接在try块中初始化对象,原因是在try、catch、finally这三个代码块中并不共享其内部声明的变量。
总结:close()方法和flush()方法的区别是flush刷新后,流可以继续使用,close是刷新一次后将流关闭。
如果想要对原来文件的内容进行续写而不是覆盖,需要在初始化FileWriter对象是用另外一个构造函数,
FileWriter fw = new FileWriter("FileWriterDemo.txt",true);
在构造函数的第二个参数为true是,表示将数据写入文件末尾处,而不是写入文件开始处 。
-------android培训、java培训、期待与您交流! ----------