請問下為什么我按照下面的代碼輸入,可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 ?對“流”功能的擴展,可以更加方便地讀取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個字節(jié),英文1個字節(jié)
? ?
? ? dop.writeUTF("哈嘍");
? ? //采用utf-16be編碼寫出,utf-16be編碼中,中英文占2個字節(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();//會出現(xiàn)EOFException
? ? System.out.println(s2);*/
? ? char s2=dis.readChar();//讀一個中字
? ? System.out.println(s2);
? ? char s3=dis.readChar();//讀一個中字
? ? System.out.println(s3);
? ? dis.close();
? ?
? ? }
}
2017-07-31
記事本里采用的是默認編碼是ANSI
,但是你項目中有很多編碼方式,java默認的是utf-16be,你寫漢字時使用的是writeUTF()這使用的是utf-8編碼,你代碼中也有注釋的,所以編碼方式不統(tǒng)一,自然會出現(xiàn)亂碼
2017-07-14
會不會是編碼格式?jīng)]統(tǒng)一,檢查一下你的項目編碼