java中DataOutputStream 乱码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中DataOutputStream 乱码相关的知识,希望对你有一定的参考价值。
这个程序是课本上的程序,可是我运行后得到的文件总是乱码,不知道问题出哪了,求哪位高手告知~~
程序如下:
import java.io.*;
public class WriteFile
public static void main(String []args)
int []intArray=10,20,30,40,50,60;
float []floatArray=11.0f,22.0f,33.0f,44.0f,55.0f;
String dirName="d:/Mydata";
try
File dir=new File(dirName);
if(!dir.exists())
dir.mkdir();
else
if(!dir.isDirectory())
System.out.println(dirName+" is not a directory..");
return;
File aFile=new File(dir,"data.txt");
aFile.createNewFile();
DataOutputStream myStream=new DataOutputStream(new FileOutputStream(aFile));
for(int i=0;i<intArray.length;i++)
myStream.writeInt(intArray[i]);
for(int j=0;j<floatArray.length;j++)
myStream.writeFloat(floatArray[j]);
catch(IOException e)
System.out.println("IO Exception thrown :"+e);
看到的是乱码,你在用DataInputStream按你写的顺序读进来看就对了。 参考技术A 你想看到的话应该用writeUTF("");方法来写 参考技术B 字节写入文本是看不到这些原来的数字的,你只有通过DataInputStream读出来
使用DataOutputStream写入int类型数字不能显示
前段时间做Android系统项目需要使用DataOutputStream数据流向文件里写入数据,写入的有String类型和int类型。写入之后在代码中使用DataInputStream读出是没有问题的,处于好奇心就把生成的文件导出来查看了一下。
打开之后发现,生成的文件里有一堆乱码,除了一些String类型的数据,其他都是乱码。当时第一反应应该是编码格式的问题,应为DataOutputStream里有writeUTF之类的方法,相当于指定的编码格式,于是我就把打开格式切换成各种编码格式,utf8、ansi、gbk等等都尝试了,都不行,这是怎么回事??
尝试过各种编码没有结果之后,我就从源码入手。由于问题都是出在int类型的数据上,于是就直接查看writeInt的方法。这一看才发现,原来int类型的数据是从内存中直接将二进制格式的文件写入文件了。回头再去用UE使用十六进制查看的方式查看生成的那个文件,真相大白。
/** * Writes an <code>int</code> to the underlying output stream as four * bytes, high byte first. If no exception is thrown, the counter * <code>written</code> is incremented by <code>4</code>. * * @param v an <code>int</code> to be written. * @exception IOException if an I/O error occurs. * @see java.io.FilterOutputStream#out */ public final void writeInt(int v) throws IOException { out.write((v >>> 24) & 0xFF); out.write((v >>> 16) & 0xFF); out.write((v >>> 8) & 0xFF); out.write((v >>> 0) & 0xFF); incCount(4); }
以上是关于java中DataOutputStream 乱码的主要内容,如果未能解决你的问题,请参考以下文章
java中DataOutputStream和FileOutputStream中,只关闭FileOutputStream,不关闭Data
使用DataOutputStream写入int类型数字不能显示
Java中的DataInputStream和DataOutputStream的作用
大数据必学Java基础(七十三):数据流DataInputStream和DataOutputStream介绍