FileInputStream fileInput = new FileInputStream("E:\\xuexi\\src.txt");
FileOutputStream fileout = new FileOutputStream("E:\\xuexi\\dest2.txt");
InputStreamReader reader = new InputStreamReader(fileInput, "GBK");
OutputStreamWriter writer=new OutputStreamWriter(fileout,"UTF-8");
int c;
char[]line=new char[10*1024];
while((c=reader.read(line,0, line.length))!=-1){
writer.write(line);
System.out.println(line);
}
fileout.close();
fileInput.close();
----輸出ouputstreamWriter的編碼貌似對寫入文件沒有影響。。請老師解答。。
2015-05-01
因為你定義writer的時候就將它定義成“UTF-8”編碼了,所以他就轉換成這個編碼輸出了。看似沒影響,其實這兒輸出文件的編碼已經變成utf-8了。輸入文件本身是ANSI編碼,也就是GBK。
2015-02-02
好吧,我其實小白了,以后不會不實驗就亂回答問題的。?
正解是:有影響。
我實驗了幾次,以下是實驗步驟:
硬盤上的src.txt的默認編碼是ANSI,所以你在硬盤上測試本身就是個未知數。
1.先在你項目的src下建立src.txt,輸入幾個漢字。
2.運行測試代碼
3.refresh項目,會發(fā)現里面多了dest.txt ?里面是亂碼。
2015-02-02
額,我試了下直接寫write(line)是可以的。。。 ? 關于編碼,把GBK和utf-8位置一換就成亂碼了
2015-02-02
可能你是代碼敲錯的原因吧,沒有write(byte[])這種用法,編碼應該是有影響的。
2015-02-02
你好啊,首先我覺得你有行代碼敲錯了,倒數第5行,應該是writer.write(line,0,line.length);
line是一個字節(jié)數組,write(int c)是寫入單個字符,write(byte[],offset,length)是把內存中的字符數組,寫入到流。另外,回答你的問題,它是while循環(huán)的結束條件,如果等于-1,表示文件,讀取完畢。
2014-11-19
while((c=reader.read(line,0, line.length))!=-1) ? 為什么是不等于-1,??