黑马程序员技术交流社区
标题: java基础持续更新------IO(2) [打印本页]
作者: 青龙李坤 时间: 2015-6-17 22:43
标题: java基础持续更新------IO(2)
FileReader主要用于读取,读取方式的不同也必然导致效率的不同。
1. 读取单个字符:读取单个字符,在字符可用、发生I/O错误或者已到达流的末尾前,此方法一直阻塞。返回值为读取到的字符数,如果已到达流的末尾,则返回-1.
2. 读取字符数组:将读取到的字符存储到字符数组里面,并且返回字符数组的长度。如果到达流的末尾,返回-1.
1. import java.io.FileNotFoundException;
2. import java.io.FileReader;
3. import java.io.IOException;
4.
5. public class FileReaderTest {
6.
7. public static void main(String[] args) throws IOException {
8. // TODO Auto-generated method stub
9. FileReader fr = new FileReader("IO流.txt");
10.
11. //演示读取单个字符
12. long time = System.currentTimeMillis();
13. readChar(fr);
14. long timereadChar = System.currentTimeMillis();
15.
16. System.out.println("time Read char is = " + (timereadChar-time));
17. //演示读取字符到缓冲区中。
18.
19. long time2 = System.currentTimeMillis();
20. readToBuf(fr);
21. long timeReadBuf = System.currentTimeMillis();
22. System.out.println("time Read to Buf is = " + (timeReadBuf-time2));
23.
24.
25. }
26. private static void readToBuf(FileReader fr) throws IOException {
27. //定义一个字符缓冲区,用于存放读到的字符。
28. char[] buf = new char[50];
29. //设刚开始读到的字符为0
30. int len = 0 ;
31. //一直循环读取字符到缓冲区中,直到读到流的末尾。
32. while((len = fr.read(buf)) != -1){
33. //将每次读满的缓冲区中的字符,变成字符串打印出来。
34. System.out.println(new String(buf , 0 , len));
35. }
36. }
37. private static void readChar(FileReader fr) throws IOException {
38. //设每个读取到的字符整数值为ch.
39. int ch = 0;
40. //循环读取字符,直到流的末尾
41. while((ch = fr.read()) != -1){
42. //将读取到的字符,强制转换为 char
43. System.out.print((char) ch);
44. }
45. }
46. }
缓冲区:
流对象的read():是从目的地一次读取一个。
缓冲区的read():是通过流对象的read将一批数据读取到缓数组,然后再从数组中一次取一个,所以内存操作要比硬盘操作要高效。
在Java中,为了提高程序的效率,为我们提供了对应的类:
BufferedReader和BufferedWriter。
示例三:
1. import java.io.BufferedWriter;
2. import java.io.FileWriter;
3. import java.io.IOException;
4.
5. public class BufferedWriterDemo {
6.
7. public static void main(String[] args) throws IOException {
8.
9. //创建一个流对象。
10. FileWriter fw = new FileWriter("buf.txt");
11.
12. //为了提高效率。创建缓冲区对象,并和要被提高效率的流相关联。
13. BufferedWriter bufw = new BufferedWriter(fw);
14.
15. for(int x=0;x<4; x++){
16. bufw.write(x+"--hahaha");
17. //写入一个换行符。
18. bufw.newLine();
19. //要对缓冲区进行刷新。记住:一般只要使用了缓冲区,就一定要刷新。
20. bufw.flush();
21. }
22.
23. //关闭缓冲区。
24. bufw.close();//问:还用关闭fw.close()?不用,因为关闭缓冲区,其实就是在关闭缓冲区关联的流。
25.
26. }
27. }
示例四:
1. import java.io.BufferedReader;
2. import java.io.FileReader;
3. import java.io.IOException;
4.
5. public class BuffereReaderDemo {
6.
7. public static void main(String[] args) throws IOException {
8.
13. //创建读取流对象 和 文件相关联。
14. FileReader fr = new FileReader("Demo.txt");
15.
16. //创建读取缓冲区对象 和 流对象关联对其进行高效 操作;
17. BufferedReader bufr = new BufferedReader(fr);
18. //简写形式:
19. //BufferedReader bufr = new BufferedReader(new FileReader("Demo.txt"));
20.
21. String line = null ;
22. while((line = bufr.readLine()) != null){
23. System.out.println(line);
24. }
25. bufr.close();
26. }
27. }
作者: 青龙李坤 时间: 2015-6-17 22:44
这是第二部分的,不要看知识点多,细心加上我们的态度必成大事!!!
作者: 1958078929 时间: 2015-6-18 08:29
谢谢分享
作者: 王冲6060 时间: 2015-6-18 19:58
感谢分享
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |