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的編碼貌似對(duì)寫(xiě)入文件沒(méi)有影響。。請(qǐng)老師解答。。
2015-05-01
因?yàn)槟愣xwriter的時(shí)候就將它定義成“UTF-8”編碼了,所以他就轉(zhuǎn)換成這個(gè)編碼輸出了。看似沒(méi)影響,其實(shí)這兒輸出文件的編碼已經(jīng)變成utf-8了。輸入文件本身是ANSI編碼,也就是GBK。
2015-02-02
好吧,我其實(shí)小白了,以后不會(huì)不實(shí)驗(yàn)就亂回答問(wèn)題的。?
正解是:有影響。
我實(shí)驗(yàn)了幾次,以下是實(shí)驗(yàn)步驟:
硬盤(pán)上的src.txt的默認(rèn)編碼是ANSI,所以你在硬盤(pán)上測(cè)試本身就是個(gè)未知數(shù)。
1.先在你項(xiàng)目的src下建立src.txt,輸入幾個(gè)漢字。
2.運(yùn)行測(cè)試代碼
3.refresh項(xiàng)目,會(huì)發(fā)現(xiàn)里面多了dest.txt ?里面是亂碼。
2015-02-02
額,我試了下直接寫(xiě)write(line)是可以的。。。 ? 關(guān)于編碼,把GBK和utf-8位置一換就成亂碼了
2015-02-02
可能你是代碼敲錯(cuò)的原因吧,沒(méi)有write(byte[])這種用法,編碼應(yīng)該是有影響的。
2015-02-02
你好啊,首先我覺(jué)得你有行代碼敲錯(cuò)了,倒數(shù)第5行,應(yīng)該是writer.write(line,0,line.length);
line是一個(gè)字節(jié)數(shù)組,write(int c)是寫(xiě)入單個(gè)字符,write(byte[],offset,length)是把內(nèi)存中的字符數(shù)組,寫(xiě)入到流。另外,回答你的問(wèn)題,它是while循環(huán)的結(jié)束條件,如果等于-1,表示文件,讀取完畢。
2014-11-19
while((c=reader.read(line,0, line.length))!=-1) ? 為什么是不等于-1,??