【问题标题】:How to write binary correct into file and prove it?如何将二进制正确写入文件并证明?
【发布时间】:2017-12-03 21:52:16
【问题描述】:

对于我的 Java 程序,我得到了需要写入文件的字节数组列表。我之前尝试过的是

FileWriter fw = new FileWriter("file.out");
BufferedWriter bw = new BufferedWriter(fw);

bw.write(new String(data));
bw.flush();

数据是列表中的一个字节[]。 因为我将它转换为字符串,所以我假设我失去了二进制文件的正确性。

所以我现在用 FileOutputStream 试试。

File myFile = new File("file.out");
FileOutputStream fos = new FileOutputStream(myFile);
BufferedOutputStream bos = new BufferedOutputStream(fos);

bos.write(data);
bos.flush();

还有数据是列表中的一个字节[]。

我的问题是,我现在如何检查我的写入文件是否真的是二进制正确的。如果我将文件的每一行读取为 byte[] 并将其与输入进行比较,它会完全一样吗?

【问题讨论】:

  • 你考虑过单元测试吗?
  • 是的,只有二进制文件没有行,把整个文件读入一个字节数组,比较一下,应该是一样的。
  • 如果你是linux用户,你可以使用xxd命令查看二进制文件的数据
  • 计算并比较输入和文件内容的 md5 哈希?

标签: java


【解决方案1】:

要将数组写入文件:

List<byte[]> list = new ArrayList<byte[]>();
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(filePath));
out.writeObject(list);

然后从同一个文件中读取你的数组:

ObjectInputStream in = new ObjectInputStream(new FileInputStream(filePath));
List<byte[]> byteList = (List<byte[]>) in.readObject();

注意 - 这不包括处理流、异常处理等

【讨论】:

    猜你喜欢
    • 2015-02-15
    • 1970-01-01
    • 2012-12-14
    • 2021-05-17
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 2021-05-17
    相关资源
    最近更新 更多