sadfiy
2017-07-13 19:37
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();
}
}
为什么乱码
肯定是乱码啊, 你使用了DataOutputStream,把int long String 都存了进去。你打开这个文件,使用系统的notepad程序,notepad程序不知道你这个什么编码,用了ansi,吧intlong什么都放在一起当GBK处理了。
怎么做不乱码
不要用记事本打开DataOutputStream创建的东西,看不到乱码,眼不见心不烦。
你自己知道是什么,用DataInputStream或者InputStream能取出来用就行了。
文件传输基础——Java IO流
133754 学习 · 1030 问题
相似问题