62,616
社区成员
发帖
与我相关
我的任务
分享
dfout.writeChar('0' + i);
dfout.writeInt('0' + i);
当一个字符型数据和整数型数据计算时,会发生自动向上转型,此时得到的数据是整数型,结果也就是你看见的0,1,2...如果要想写入字符型数据,则需要强制向下转型,改为这样:
dfout.writeInt((char)('0' + i));
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class J_Data {
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
FileOutputStream fout = new FileOutputStream("out.txt");
DataOutputStream dfout = new DataOutputStream(fout);
dfout.writeInt('0' - 1);
dfout.writeInt('0');
dfout.writeInt('0' + 1);
dfout.writeInt(1);
dfout.writeInt('中');
FileInputStream fin = new FileInputStream("out.txt");
DataInputStream dfin = new DataInputStream(fin);
System.out.println(dfin.readInt());
System.out.println(dfin.readInt());
System.out.println(dfin.readInt());
System.out.println(dfin.readInt());
System.out.println(dfin.readInt());
}catch (Exception e){
System.err.println("发生异常:"+e);
e.printStackTrace();
}
}
}
楼主你好,关于你的问题在控制台打印结果为"48,49,50,51",而直接打开out.txt却是"0,1,2,3",
你可以运行一下以上的代码.对比下控制台结果和txt里的结果,再看下面的解释.
DataOutputStream本来就是用来写二进制数据的,你直接打开out.txt当然
看到的是乱码,而用DataInputStream按你写的顺序读进来看就对了。