1.何为IO流:
java中用来处理设备之间的数据传输.JAVA中对数据的操作是通过流的方式.
JAVA中用于操作流的对象都在IO包中。
2.流的分类:
1) 按数据分为两种:字节流的字符流。
2) 按流向分: 输入流和输出流。
3.流的关闭:
在流不需要使用的时候一定记得要去关闭。这样可以避免资源的消耗,也提高效率。
但是在执行close()方法的时候,系统会自己调用flush()方法,将数据刷入到文件中。
还有一点就是如果存在多个流对象,那么需要将流按逆序关闭。不能按顺序关闭,否则会报错。
4. FileWriter和FileReader:
用来处理文件的写入和读取.
FileWriter fileWriter = new FileWriter("D:\\demo1.txt");
当文件不存在时,会去自动创建。但是如果文件存在则会覆盖原来文件。
若是要在原来的基础上去写入文件。则在后面加一个参数。
fw = new FileWriter("D:\\demo.txt", true);
这样即可现实文件的续写。关于文件的读取一样:
fileReader = new FileReader("D:\\demo.txt");
一般情况下会以字符数组的方式去读取数据.
char[] data = new char[1024]; int num = 0; while((num = fileReader.read(data)) != -1){ /** * 只读取含有字符的长度. * **/ System.out.print(new String(data,0,num)); }
这里要注意在windows下要写入个换行符,要写为witer("\r\n");
5.bufferedWiter和buufferedReader:
缓冲区的出现就是为了提高流的操作效率才出现的。
所以在创建缓冲区之前,必须要有流的对象。
当然缓冲区还提高了一个跨平台的换行符. newLine();
不在需要用流对象的时候那样witer("\r\n");直接使用换行符就好!
bufferedReader可以选择去读一行,当返回结果为null 时表示文件结束,但是要注意的是readLine()只返回回车符之前的数据,并不返回回车符。
同时也可以去用字符数组的方式去读取数据.
/** * 用缓冲区中的方法读一行 * * **/ fw = new FileReader("d:\\demo2.txt"); br = new BufferedReader(fw); String line = null; while((line = br.readLine()) != null){ System.out.println(line); } /** * 以字符数组方式去读取 * **/ /** fw = new FileReader("d:\\demo.txt"); br = new BufferedReader(fw); char[] data = new char[1024]; int ch = 0; long startTime= new Date().getTime(); while((ch = br.read(data)) != -1){ System.out.println(ch +" "+new String(data)); } long emdTime= new Date().getTime(); System.out.println("time:" +(emdTime - startTime)); */
6.BufferedReader中的readLine()方法的原理: