码迷,mamicode.com
首页 > 其他好文 > 详细

流与文件(二)

时间:2014-12-14 22:31:10      阅读:296      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   使用   sp   java   strong   

文本流

前面讨论的是二进制的输入输出,如果直接打开文件,会发现里面不是我们能读懂的内容。(用记事本打开里面是些空格)虽然二进制I/O速度快且效率高,但不易于人们阅读。java中的字符串,使用的是Unicode字符,例如字符串"1234"在字符编码中实际上是【00 31 00 32 00 33 00 34】,然而,Java所运行的环境有自己的字符编码,例如Windows用ASCII码,编码为【31 32 33 34】。为了在运行环境的编码和Unicode编码之间转换,Java提供了一套流过滤器。例如InputStreamReader/OutputStreamWriter

InputStreamReader in = new InputStreamReader(System.in);//从控制台读入,并自动将其转化为Unicode码。

字符集

在JDK1.4中引入的java.nio包通过引入Charset类来统一字符集的转换。

字符集给出了双字节Unicode码序列与在本地字符编码中采用的字节序列间的映射。一旦有了字符集,就可以用它在Unicode字符串和字节序列编码之间进行转换。

文本输出

进行文本输出时,应该使用PrintWriter。

PrintWriter out = new PrintWriter(new FileOutputStream("employee.txt"));

PrintWriter(OutputStream)构造器自动增加一个OutputStreamWriter来将Unicode字符转换为本地字符。

PrintWriter中有print方法和println方法,用以写入数据。

String name = "Harry Hacker";
double salary = 75000;
out.print(name);
out.print(‘ ‘);
out.println(salary);

这将下列字符

Harry Hacker 75000

写入输出流out中。随后字符被转换为字节病最终进入文件employee.txt中。

PrintWriter总是缓冲的,可以通过PrintWriter(Writer, boolean)构造器中的第二个参数来开启或关闭自动刷新。如果开启,那么println将刷新缓冲区。

文本输入

BufferedReader类,readLine方法,以行的方式读取文本。

BufferedReader in = new BufferedReader(new FileReader("employee.txt"));

如果没有输入数据,readLine方法返回null。

FileReader类已经把本地字节转化为Unicode字符。对于其他输入源,需要使用InputStreamReader

BufferedReader in = BufferedReader(new InputStreamReader(System.in));

流与文件(二)

标签:style   blog   io   ar   color   使用   sp   java   strong   

原文地址:http://www.cnblogs.com/johnsblog/p/4163121.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!