java - 预计算文件流校验和

标签 java java-io java.nio.file

我正在努力确保在磁盘空间不足、网络问题或在流式传输到文件过程中可能发生的任何异常情况下输出文件的完整性。 有没有办法在写入磁盘之前预先计算 FileStream 校验和,然后检查文件是否正确写入。 这对我来说听起来有点荒谬,系统通过 checkSum 验证其自己导出的 XML 的完整性,通常另一端的工作是验证使用的文件是否符合其他系统生成的文件。

但这是我必须执行的要求。

她是我写成文件的流:

 String xmlTransfer ="";
    File testFile =  new File("testFile.xml");
    InputStream in = new ByteArrayInputStream(xmlTransfer.getBytes("utf-8"));
    FileOutputStream out = new FileOutputStream(testFile)
     byte[] buffer = new byte[2048];
               int bytesRead;
               while ((bytesRead = in.read(buffer)) != -1) {
                   out.write(buffer, 0, bytesRead);
               }
               out.close();
               in.close();

最佳答案

不,你无法预先计算出有多少数据会来自一个流。这根本不是流的工作方式。

如果您正在编写代码的两端,您可以做的是首先计算发送端的文件大小并在发送文件内容本身之前发送它。

关于java - 预计算文件流校验和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21574468/

相关文章:

java - SequenceInputStream 中每个新流的新行

java - 将java中的不同属性集加载到ArrayList

exception - Hadoop:任务跟踪器不会启动 java.io.IOException

java - Files.list 和 Files.walkFileTree 和 Files.walk with maxdepth = 1 有什么区别?

linux - Java.nio.Files "createSymbolicLink"删除目标目录内容?

java - 将 SCP 与 JSch 一起使用时如何转义双引号?

java - 从 Spring bean 中以字符串形式检索属性/值

java - 如何在录音时为语音留言设置定时器(与 WhatsApp 语音留言录音功能相同)?

java - 有时,类在加载时编织期间不会被编织

java - 正整数仅在 java.text.NumberFormat 中?