Java中的二进制文件类型
问题描述:
我有一个二进制类型的问题。我有数据的二进制文件。每个元素都被“_”分割。我正在使用DataInputStream in = new DataInputStream(new FileInputStream("C:/Data/"+names));
,其中名称是我的二进制文件的名称。我如何读取这个文件并保存数组中的元素?这个有可能?Java中的二进制文件类型
答
写入二进制文件时,不需要用'_'分割矩阵中的每个项目。该程序知道为每个项目分配了多少个字节。
下面的代码在2之间写入2个不带'_'的双打。之后,它从文件中读回并输出数据。
public class Test {
public static void main(String[] args) throws Exception {
DataOutputStream dos = new DataOutputStream(new FileOutputStream("a.bin"));
dos.writeDouble(1.2);
dos.writeDouble(3.4);
dos.close();
DataInputStream dis = new DataInputStream(new FileInputStream("a.bin"));
System.out.println(dis.readDouble());
System.out.println(dis.readDouble());
dis.close();
}
}
程序输出:
1.2
3.4
但是,如果你不写的文件,并有“_”项目之间,你可以从二进制文件中读取每个项目为@后使用readChar()
Bhaskar已经提到过。最后,使用ObjectOutputStream
可以一次写入整个数组。
public class Test {
public static void main(String[] args) throws Exception {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("a.bin"));
double[] a = {1.2, 3.4};
oos.writeObject(a);
oos.close();
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("a.bin"));
double[] b = (double[]) ois.readObject();
System.out.println(b[0]);
System.out.println(b[1]);
ois.close();
}
}
答
您可以使用read(byte[])
或read(byte[],ffset,length)
将文件的内容读入字节数组。
答
这取决于如何将数据写入该文件。如果它是使用DataOutputStream
的writeXXX()
写的,其中XXX表示元素的实际数据类型,并且元素之间用writeChar('_')
分隔,则可以使用DataInputStream
的readXXX()
方法轻松读取它们。只要确保您按照它们写入的确切顺序阅读元素,并且每当您期望-
存在时(即在两个元素之间),就使用readChar()
。
该文件实际上是二进制文件还是只是使用您的约定条目与下划线“编码”? – Chris
您能否详细介绍文件格式? – orien
fyi ascii code of''_''是'0x5f' –