---------------------- android培训、java培训、期待与您交流! ----------------------
1、IO(InputOutput)流
·IO流用来处理设备之间的数据传输。
·Java对数据的操作是通过流的方式。
·Java用于操作流的对象都在IO包中。java.io.*
·流按操作数据分为两种:字节流与字符流。
·流按流向分为:输入流,输出流。
字符流融合编码表。
编码表:ASCII码;GB2312;GBK;UNICODE(两个字节16位);UTF-8(按需求分配)
IO流常用基类:
字节流的抽象基类:
InputStream,OutputStream
字符流的抽象基类:
Reader,Writer
注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。(前缀为功能)
例如:
InputStream的子类FileInputStream。
Reader的子类FileReader。
IO程序的书写:
导入IO包中的类。进行IO异常处理。在finally中对流进行关闭。
2、字符流------创建文件FileWriter
先学习一下字符流的特点。[day18-07]
既然IO流是用于操作数据的,那么数据最常见的体现形式就是文件。
那么先以操作文件为主来演示。
需求:在硬盘上,创建一个文件并写入一些文字数据。
找到一个专门用于操作文件的Writer子类对象。FileWriter。
后缀名是父类名,前缀名是该流对象的功能。
(没有空参数的构造函数:该对象一被初始化,就必须有要明确被操作的文件。而且该文件会被创建到指定的目录下。如果该目录下已有同名文件,将被覆盖。就是在明确数据要存放的目的地。)
步骤:
1、创建流对象,建立数据存放文件。
FileWriter fw = newFileWriter(“Demo.txt”);
2、调用流对象的写入方法,将数据写入流。
fw.write(“abcde”);
3、刷新流对象,将其中的缓冲数据刷到目的地中去。
fw.flush();
4、关闭流资源,并将流中的数据清空到文件中。
fw.close();//关闭流,会先刷新流。
关闭流资源。但是关闭之前仍然要刷新一次内部缓冲中的数据。将数据刷到目的地中。
close和flush区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。
带IO异常处理的完整创建文件代码:
import java.io.*; class FileWriterDemo2 { public static void main(String[] args) { FileWriter fw = null;//在外部创建引用,在try内部进行初始化。 try { fw = new FileWriter("demo.txt");//都抛异常 fw.write("abcdefg");//都抛异常 //fw.close();//都抛异常且三句话有关联。 } catch (IOException e) { System.out.println("catch: "+e.toString()); } finally//一定要执行的语句放在finally中。fw.close也要抛异常,单独再次try。 { try { if(fw!=null)//不可能为空,才有关闭的可能。 fw.close(); //对关闭的流,进行不为null判断。多个流时,分别关闭。 } catch (IOException e) { System.out.println(e.toString()); } } } } |
对已有文件的数据读写:
构造流对象时传递一个true参数,代表不覆盖已有文件,而是在已有文件的末尾处进行数据读写。
FileWwriter(String fileName,boolean append)
FileWriter fw = new FileWwriter("demo.txt".true);
fw.write("nihao\r\nxiexie");//\r\n代表换行。
fw.close();
写的动作完成,开始读取数据[day18-12]
3、字符流------读取文件FileReader
1、建立一个流对象,将已存在的一个文件加载进流。
FileReader fr = newFileReader(“Test.txt”);
2、创建一个临时存放数据的数组。
char[] ch = new char[1024];//1024的整数倍。
3、调用流对象的读取方法将流中的数据读入到数组中。
fr.read(ch);//read(char[])方法返回的是读到的字符个数,达到流末尾返回-1。
4、关闭流资源。
fr.close();
参考程序(复制文本文件)
import java.io.*;
class CopyText { public static void main(String[] args) throws IOException { copy_2(); } public static void copy_2() { FileWriter fw = null; FileReader fr = null; try { fw = new FileWriter("SystemDemo_copy.txt"); fr = new FileReader("SystemDemo.java"); char[] buf = new char[1024]; int len = 0; while ((len=fr.read(buf))!=-1) { fw.write(buf,0,len); } } catch (IOException e) { throw new RuntimeException("读写失败!"); } finally//资源需要单独关闭。 { if(fr!=null) try { fr.close(); } catch (IOException e) {
}
if(fw!=null) try { fw.close(); } catch (IOException e) {
} } } |
---------------------- android培训、java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima