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,字符等基本数据类型
* @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个字节,英文1个字节
dop.writeUTF("哈喽");
//采用utf-16be编码写出,utf-16be编码中,中英文占2个字节
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();//会出现EOFException
System.out.println(s2);*/
char s2=dis.readChar();//读一个中字
System.out.println(s2);
char s3=dis.readChar();//读一个中字
System.out.println(s3);
dis.close();
}
}
记事本里采用的是默认编码是ANSI,但是你项目中有很多编码方式,java默认的是utf-16be,你写汉字时使用的是writeUTF()这使用的是utf-8编码,你代码中也有注释的,所以编码方式不统一,自然会出现乱码
会不会是编码格式没统一,检查一下你的项目编码