<span style="font-size:18px;">01./*
02.IO流之字符流的两个基类
03.Reader Writer
04.数据的最常见体现形式是:文件。
05.FileReader FileWriter
06.读取缓冲技术
07.BufferedReader BufferedWriter
08.*/
09.import java.io.*;
10.class IODemo
11.{
12. public static void main(String[] args) throws IOException//为了演示代码简洁所以抛出异常,应该try,catch
13. {
14. fileWriter();
15. contWrite();
16. fileRead();
17. bufWrite();
18. bufRead();
19. }
20.
21.//FileWriter对象演示及IO异常的处理+++++++++++++++++++++++++++++++++++++++++++++
22. public static void fileWriter()
23. {
24. FileWriter fw = null;
25. try
26. {
27. //创建一个FileWriter对象,该对象一被初始化就要明确被操作的文件。
28. //创建对象时会把demo.txt文件创建到指定目录,如果有同名文件存在会被覆盖。
29. fw = new FileWriter("demo.txt");
30. //调用write方法,将字符串写入到流中。
31. fw.write("abvadf");
32. //刷新流对象中的缓冲数据,将数据刷到目的文件中。
33. fw.flush();
34. //关闭流资源,但关闭前会调用flush刷新一次。flush刷新后流可以继续使用。
35. //fw.close();
36. }
37. catch (IOException e)
38. {
39. throw new RuntimeException("读写失败");
40. }
41. finally
42. {
43. try
44. {
45. //一定要对fw进行非空判断,如果为空就无法调用close方法。
46. if(fw!=null)
47. fw.close();
48. }
49. catch (IOException e)
50. {
51. throw new RuntimeException("关闭失败");
52. }
53. }
54. }
55.
56.//FileWriter对已有文件的数据续写演示,这里抛出异常是为了演示代码简洁,实际应该向上面的代码做try,catch处理++++++++++++++++++++++++++++++++++++++++++++++
57. public static void contWrite() throws IOException
58. {
59. //传递一个true参数,代表不覆盖已有文件,并在已有文件的末尾处续写数据
60. FileWriter fw = new FileWriter("demo.txt",true);
61. fw.write("续写");
62. fw.write("\r\n换行演示");//windows中"\r\n"代表换行
63. fw.flush();
64. }
65.
66.//FileReader演示两种读取方式
67. public static void fileRead()throws IOException//为了演示所有抛出异常,应该try,catch处理。
68. {
69. //创建一个文件读取流对象,和指定名称的文件相关联。
70. //要保证该文件是已经存在的,如果不存在会发生FileNotFoundException异常。
71. FileReader fr = new FileReader("demo.txt");
72.
73.//++++++第一种读取方式:调用读取流对象的read方法。++++++++++++++++++++
74. //read():一次读一个字符返回字符对应的int值,而且自动往下读。读到末尾没有数据时会返回-1
75. /*
76. int ch = 0;
77. while((ch=fr.read())!=-1)
78. {
79. System.out.println((char)ch);
80. }
81. */
82. /*
83. while(true)
84. {
85. int ch = fr.read();
86. if(ch==-1)
87. break;
88. System.out.println((char)ch);
89. }
90. */
91.
92.//++++++第二种读取方式:read(char[])方法把读到的字符存到了字符数组里+++++++++++++++++++++++++++++++++++++++++++++++++
93.
94. //所以要建立一个数组char[],如果定义的字符数组长度不够时就返回read读到的字符个数,当没有数据时返回-1。
95.
96. char[] buf = new char[1024];//一般定义1024的整数倍。
97. int num = 0;
98. while((num = fr.read(buf))!=-1)
99. {
100. //这里建议不用println如果数据超过1024时,会在不该换行的时候换行
101. System.out.print(new String(buf,0,num));
102. }
103. fr.close();
104. }
105.
106.//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
107. /*
108. 读写缓冲区:BufferedWriter BufferedReader
109. */
110. //++++BufferedWriter演示++++++++++++++++++++++++++++
111. public static void bufWrite()throws IOException
112. {
113. //创建一个字符写入流对象
114. FileWriter fw = new FileWriter("buf.txt");
115.
116. //将需要缓冲的流对象作为参数传递给缓冲区的构造函数。
117. BufferedWriter bufw = new BufferedWriter(fw);
118. bufw.write("dsafdasf");
119. //缓冲区提供一个跨平台的换行方法newLine();只能在缓冲区对象中使用。
120. bufw.newLine();
121. //记住,只要用到缓冲区就要记得刷新
122. bufw.flush();
123. //其实关闭缓冲区就是关闭,使用该缓冲区的流对象。所以fw.close()可以不写。
124. bufw.close();
125.
126. }
127. //++++BufferedReader演示++++++++++++++++++++++++++++
128. public static void bufRead()throws IOException
129. {
130. BufferedReader bufr = new BufferedReader(new FileReader("buf.txt"));
131. //缓冲区提供了读一行的方法readLine();读到无数据时返回null
132. String line = null;
133. while((line=bufr.readLine())!=null)
134. {
135. System.out.println(line);
136. bufr.readLine();
137. }
138. bufr.close();
139.
140. }
141.}
</span>
黑马程序员;IO流之字符流
最新推荐文章于 2015-12-16 13:37:52 发布