原始文件和克隆文件的大小不同(java)

  • 本文关键字:文件 java 原始 java xml
  • 更新时间 :
  • 英文 :


am以这样的方式在我的java代码中克隆xml文件:

 public boolean isCrcCorrect(Path path) throws IOException, XPathExpressionException {
    ByteArrayOutputStream output = new ByteArrayOutputStream();
    if (!fileData.currentFilePath.equals(path.toString())) {
        parseFile(path);
    }
    List<String> file_lines = Files.readAllLines(path);
    //BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(output));
    BufferedWriter bw = new BufferedWriter(new FileWriter(new File("f:\Projects\iqpdct\iqpdct-domain\src\main\java\de\iq2dev\domain\util\debug.xml")));
    for (int i = 0; i < file_lines.size(); i++) {
        if (i != 0) {
            bw.write("n");
        }
        if (file_lines.get(i).equals("  <Stamp crc="3916602279"><Checker name="IODD-Checker V1.1.1" version="V1.1.1.0"/></Stamp>")) {
            bw.write("  <Stamp crc=""><Checker name="IODD-Checker V1.1.1" version="V1.1.1.0"/></Stamp>");
        } else {
            bw.write(file_lines.get(i));
        }
        System.out.println(file_lines.get(i));
    }
    bw.flush();
    bw.close();
    crc.reset();
    crc.update(output.toByteArray());
    //debug
    System.out.println(crc.getValue());
    System.out.println(fileData.file_crc);
    //return fileData.file_crc == crc.getValue();
    return false;
}

我需要修改xml中的属性(为了调试,我手动在循环中创建了它)。我需要此克隆进行校验和计算结果文件"debug.xml"与源文件相同(InteliJ IDEA告诉我们),但大小不同源:41395,克隆:40608,因此我的校验和(CRC32函数)不正确
是什么原因造成的?

只是猜测,但您似乎将新行硬编码为n。你的输入文件可能有Windows风格的行尾,而你正在用代码修改它们吗?

这里不确定。。。但当你用<Stamp crc=""><Checker name="IODD-Checker V1.1.1" version="V1.1.1.0"/></Stamp>替换<Stamp crc="3916602279"><Checker name="IODD-Checker V1.1.1" version="V1.1.1.0"/></Stamp>行时,也许这就是造成差异的原因?

试着不这样做,看看它是否会产生相同大小的克隆文件。请帮我试试。

此外,正如纪尧姆所说,windows和mac的n差异是否有不同的大小?

在一个完全不同的上下文中,如果我错了,有人会纠正我,但bw.close()不是自动调用bw.flush()吗?我想是的。

最新更新