import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class J_Data {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
FileOutputStream fout = new FileOutputStream("out.txt");
DataOutputStream dfout = new DataOutputStream(fout);
int i;
for(i=0;i<4;i++)
{
dfout.writeInt('0' + i);
}
//dfout.close();
FileInputStream fin = new FileInputStream("out.txt");
DataInputStream dfin = new DataInputStream(fin);
for(i=0;i<4;i++)
{
System.out.print(dfin.readInt()+",");
}
dfin.close();
}
catch (Exception e)
{
System.err.println("发生异常:"+e);
e.printStackTrace();
}
}
}
请问:为什么写入out.txt中的是“ 0 1 2 3”,而不是预期的“ 48 49 50 51”?
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class J_Data {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
FileOutputStream fout = new FileOutputStream("out.txt");
DataOutputStream dfout = new DataOutputStream(fout);
int i;
for(i=0;i<4;i++)
{
dfout.writeInt('0' + i);
}
//dfout.close();
FileInputStream fin = new FileInputStream("out.txt");
DataInputStream dfin = new DataInputStream(fin);
for(i=0;i<4;i++)
{
System.out.print(dfin.readInt()+",");
}
dfin.close();
}
catch (Exception e)
{
System.err.println("发生异常:"+e);
e.printStackTrace();
}
}
}
请问:为什么写入out.txt中的是“ 0 1 2 3”,而不是预期的“ 48 49 50 51”?
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按你写的顺序读进来看就对了。
至于为什么system.println()可以正确读出来,可能是系统调用默认格式如utf-8.这个不确定。
不过原因是这样子的您写入文件的是int 的,其实还是转换为字符写入的,是 0 1 2 3但是你读出来的是int读出来的,但是这个int是从流里面一byte读取出来的个人觉得写入的是字符读取出来是char的,读取出来的其实也是0 1 2 3
但是转换成了48 49 50 51的
2楼说的对,如果想在out.txt中能看到结果,建议用字符流类OutputStreamWriter或FileWriter