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[ ])
{
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( );
} // try-catch结构结束
} // 方法main结束
} // 类J_Data结束这个程序运行后,文件out.txt写入的是 0 1 2 3,
输出的却是48,49,50,51,为什么呢?
(((a & 0xff) << 24) | ((b & 0xff) << 16) |
((c & 0xff) << 8) | (d & 0xff))
dfout.writeInt('0' + i);
你这句代码将输入分别改成了 48+0 48+1 48+2 48+3 so^
dfout.writeInt('0' + i);
你这句代码将输入分别改成了 48+0 48+1 48+2 48+3 so^
输出到文件out.txt的是字符
显示在控制台的是ASCII码不知正确否?
我不同意,本身就是已经经过数据包装的流 DataOutputStream和FileOutputStream,而使用的也是它们的
writeInt()方法,也就是说,输入的时候是一个整形一个整形输入,即4个字节4个输入.
读的时候readInt()方法也是4个字节4个字节读的.那么你这样说就不通了.LZ的问题出现的原因是他在写入文件的时候就默认将('0'+i)这个表达式转化成int值,再写入文件,这时候如果打开文件看可以看到结果已经是48,49,50,51了,也就是说48,49,50,51已经作为4个整数保存在文件中.而不存在你这种说法.
你写入的其实是48,49
而你的文件以文本方式打开的时候就是0,1,了。
当然因为1个int有4个字节的,其它3个字节因为是0就没有显示出来了。
正如方法名所说的writeInt() 那写入的数据就应该是整型类型的
'0'所对应的ascii是多少?