請(qǐng)問下為什么我按照下面的代碼輸入,可TXT里打開是亂碼
import java.io.DataOutputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.InputStream;
public class DFileIO {
/**
* @param args
* DataOutputStream/DataInputStream ?對(duì)“流”功能的擴(kuò)展,可以更加方便地讀取int,long,字符等基本數(shù)據(jù)類型
* @throws IOException?
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
DataOutput("D:\\abc\\cc.txt");
//DataInput(new File("D:\\abc\\cc.txt"));
}
? ? public static void DataOutput(String file) throws IOException{//輸入也可以是File類型,這兩種都試過可以的
? ? DataOutputStream dop=new DataOutputStream(new FileOutputStream(file));
? ? dop.writeInt(10);
? ? dop.writeInt(-10);
? ? dop.writeLong(10L);
? ? dop.writeDouble(0.5);
? ? //采用utf-8編碼寫出utf-8編碼中,中文占3個(gè)字節(jié),英文1個(gè)字節(jié)
? ?
? ? dop.writeUTF("哈嘍");
? ? //采用utf-16be編碼寫出,utf-16be編碼中,中英文占2個(gè)字節(jié)
? ? dop.writeChars("哈樓");
? ? dop.close();
? ? FileIO.readFirst(file); ? ? ? ?
? ? }
? ? public static void DataInput(File file) throws IOException{
? ? DataInputStream dis=new DataInputStream(new FileInputStream(file));
? ? int i=dis.readInt();
? ? System.out.println(i);
? ? i=dis.readInt();
? ? System.out.println(i);
? ? long l=dis.readLong();
? ? System.out.println(l);
? ? double d=dis.readDouble();
? ? System.out.println(d);
? ? String s=dis.readUTF();
? ? System.out.println(s);
? ? /*String s2=dis.readUTF();//會(huì)出現(xiàn)EOFException
? ? System.out.println(s2);*/
? ? char s2=dis.readChar();//讀一個(gè)中字
? ? System.out.println(s2);
? ? char s3=dis.readChar();//讀一個(gè)中字
? ? System.out.println(s3);
? ? dis.close();
? ?
? ? }
}
2017-07-31
記事本里采用的是默認(rèn)編碼是ANSI
,但是你項(xiàng)目中有很多編碼方式,java默認(rèn)的是utf-16be,你寫漢字時(shí)使用的是writeUTF()這使用的是utf-8編碼,你代碼中也有注釋的,所以編碼方式不統(tǒng)一,自然會(huì)出現(xiàn)亂碼
2017-07-14
會(huì)不會(huì)是編碼格式?jīng)]統(tǒng)一,檢查一下你的項(xiàng)目編碼