黑马程序员技术交流社区

标题: java输入输出流小疑问? [打印本页]

作者: zoudeyong    时间: 2013-5-1 23:20
标题: java输入输出流小疑问?
本帖最后由 zoudeyong 于 2013-5-2 08:05 编辑

java中
1: File file=new File("1.txt");文档没创建 而FileWriter out=new FileWriter("2.txt");文档就创建了,请问下什么时候他会自动创建什么时候不会自动创建?

2:随机流的readline读取非ASCII乱码所以要重新编码  而缓冲流为啥可以直接用readline读取非ASCII的?
作者: 阿彪    时间: 2013-5-1 23:38
File好象只和Io结合读取一个路径,FileWrite()构造方法底层可直接操作文件 ,就会自己创建文件。如高效流就不支持直接读取文件 ,需要传递一个File底层读取文件 方法。
  这个好象根据File的构造方法来决定 的。 查查API就明白 了
作者: 李慧声    时间: 2013-5-2 00:06
File file=new File("1.txt")只是将1.txt封装成一个File对象,并没有去读写硬盘;FileWriter out=new FileWriter("2.txt"),很明显这里有两步动作,第一讲2.txt封装成File对象,接着去读写硬盘,创建2.txt文件
我想ACSII的范围有影响吧(-128 ~ 127) 刚好是 8个比特位的范围。
API说 :RandomAccessFile的readLine()方法从此文件读取文本的下一行。此方法可以从该文件的当前文件指针处成功地读取字节,直到到达行结束符或文件的末尾。每个字节都转换为一个字符,方法是采用该字符的低八位字节值,并将该字符的高八位设置为零。因此,此方法不支持完整的 Unicode 字符集。那么我想既然是去低八位,那就有可能因为不同的编码方式造成这低八位的值不一致而产生乱码。
而BufferedReader的readLine方法是:读取一个文本行。通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行,又不操作字节数组,当然可以操作非ASCII。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2