weixin_慕斯7415096
可以让你更方便的操作文件的读写。
前者就相当于你从家到公司有公交或者有地铁一样, 只要知道你自己家是什么站点,公司是什么站点就可以到达目的地。
后者就相当与你自己从家到公司要走路或者自己开车,除了你要知道你家和公司的站点是什么, 你也必须知道你从家去公司要走什么路线才能到目的地。
慕哥3872218
好吧,我已经不学java了
慕九州4633389
问问题的时候可以把代码放出来这样的话好解决 嘿嘿
云端的人3995738
哦,上面那个回答的最后那句话错了,不要管。你是错在while后条件竟然加了分号,这就导致后面的下标越界
qq_什么亡魂溺海没有跳海实在_03283094
因为你在复制到文件之前,通过 int c; while((c = isr.read())!=-1){ System.out.print((char)c); }给字节全部读完了,并打印出来,再次拿isr这个对象去read的时候,是读取不到字节了
qq_noheartnoswe_04385033
你新建的文本文件window默认是ANSI编码,而ANSI编码就代表GBK编码,java是双字节编码,即utf-16be,先检查你建的项目是不是GBK或utf-16be编码,再检查写入文件时的字节或字符流是否指定为该编码方法!可参照以下代码:
public class BufferReaderWriter {
public static void main(String[] args) throws IOException {
// 读操作
BufferedReader br=new BufferedReader(
new InputStreamReader(
new FileInputStream("C:\\Program Files\\Java\\workspace\\06IO流 \\src\\sl0007_bufferreaderwriter\\imooc-gbk.txt"),"gbk"));
//写操作
BufferedWriter bw=new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream("C:\\Program Files\\Java\\workspace\\06IO流\\src\\sl0007_bufferreaderwriter\\imooc-gbk2.txt",true),"utf-16be"));
String line2;
while((line2=br.readLine())!=null){
System.out.println(line2);
bw.write(line2);
//单独写出换行操作
bw.newLine();
bw.flush();
}
br.close();
pw.close();
}
}
Allen_______
666
smlrole
需要写入,你可以在使用OutputStreamWriter或FileWriter不加入flush()方法,运行后观察被复制文件大小,你会看到不是GBK的文件,有时候复制文本为空,即没有复制东西,为0KB. 同时字符流FileWriter有可能出现漏读现象,再加上flush()方法,发现都被写入。
因为下次在使用字符流的时候一定要记得加flush()方法确保没有错误。
物语似钺
吴登广
utf-8默认就是中文,gbk就会乱码
森木
FileReader构造简单是不错,但是无法设置编码类型让它几乎没办法被使用
普罗提亚ban
可以把你的代码发上来看看吗