A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zoudeyong 中级黑马   /  2013-5-1 23:20  /  1385 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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的?

2 个回复

倒序浏览
File好象只和Io结合读取一个路径,FileWrite()构造方法底层可直接操作文件 ,就会自己创建文件。如高效流就不支持直接读取文件 ,需要传递一个File底层读取文件 方法。
  这个好象根据File的构造方法来决定 的。 查查API就明白 了
回复 使用道具 举报
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。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马