課程
/后端開發(fā)
/Java
/文件傳輸基礎(chǔ)——Java IO流
為啥我新建一個txt文件在里面寫上些字后用這個方法復(fù)制出來的文件是亂碼呢?
2016-12-17
源自:文件傳輸基礎(chǔ)——Java IO流 5-2
正在回答
你新建的文本文件window默認(rèn)是ANSI編碼,而ANSI編碼就代表GBK編碼,java是雙字節(jié)編碼,即utf-16be,先檢查你建的項目是不是GBK或utf-16be編碼,再檢查寫入文件時的字節(jié)或字符流是否指定為該編碼方法!可參照以下代碼:
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();
? }
}
舉報
為您介紹IO流的使用,以及對象的序列化和反序列化的內(nèi)容
3 回答復(fù)制txt文件為什么輸出文件內(nèi)容顯示不出來
5 回答為什么寫文件時生成的文件是亂碼?
1 回答為什么在dos.dat文件里面顯示的是一堆亂碼?
1 回答為什么我用utf-8編碼的文件來做這些操作沒有出現(xiàn)亂碼?
1 回答為什么創(chuàng)建不出來文件呢,我也刷新了
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2016-12-18
你新建的文本文件window默認(rèn)是ANSI編碼,而ANSI編碼就代表GBK編碼,java是雙字節(jié)編碼,即utf-16be,先檢查你建的項目是不是GBK或utf-16be編碼,再檢查寫入文件時的字節(jié)或字符流是否指定為該編碼方法!可參照以下代碼:
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();
? }
}