Java二进制文件类型

时间:2011-11-19 12:07:40

标签: java file binary

我遇到二进制类型的问题。我有数据的二进制文件。每个元素都用“_”分隔。我正在使用
DataInputStream in = new DataInputStream(new FileInputStream("C:/Data/"+names));,其中names是我的二进制文件的名称。我如何读取此文件并在数组中保存元素?这可能吗?

3 个答案:

答案 0 :(得分:3)

写入二进制文件时,无需使用“_”拆分矩阵中的每个项目。程序知道为每个项目分配了多少字节。

以下代码在其间写入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();
    }
}

答案 1 :(得分:1)

这取决于数据如何写入该文件。如果它是使用DataOutputStream的{​​{1}}编写的,其中XXX代表元素的实际数据类型,并且元素由writeXXX()分隔,那么您可以使用{轻松读取它们{1}}的{​​{1}}方法。只要确保按照编写的确切顺序读取元素,并且只要期望writeChar('_')存在(即两个元素之间),就可以使用DataInputStream

答案 2 :(得分:0)

您可以使用read(byte[])read(byte[],ffset,length)将文件内容读入字节数组。