我编写了一个程序来输入文件,反转字节并将其写入另一个文件。然后。它会反转反转的文件并将其输出到另一个文件中。但是,最后,当我应该再次获得相同的文件时,它会被损坏。我已经搜索了这个,但找不到解决方案。
倒车代码正常工作。我测试了它。 如果你告诉我我做错了什么/失踪,我会很高兴。
try {
URL image = new URL(path);
fis = image.openStream();
fos = new FileOutputStream(output);
while (-1 != (b = fis.read(bytes))) {
sum += b;
System.out.println("Bytes being written: " + b);
fos.write(bytes, 0, b);
}
JOptionPane.showConfirmDialog(null, "File " + new File(output).getAbsoluteFile() + " successfully downloaded.\n File size in bytes is :" + sum);
//Algorithm part
cSum = sum;
System.out.println("Byte size=" + sum);
sum = 0;
cBytes = new byte[cSum];
revBytes = new byte[cSum];
bais = new ByteArrayInputStream(cBytes);
revBytes = CDIP.algo(cBytes);
fos = new FileOutputStream("Reversed" + output);
while (-1 != (b = bais.read(revBytes))) {
sum += b;
System.out.println("Reversed bytes being written: " + b);
fos.write(revBytes, 0, b);
}
JOptionPane.showConfirmDialog(null, "File successfully reversed! Size(in bytes): " + sum);
---逆转方法
private static byte[] algo(byte[] text) {
if(text==null) {
return null;
}
int length = text.length;
for (int i = 0; i <= length / 2; i++) {
byte temp = text[length - i - 1];
text[length - i -1] = text[i];
text[i] = temp;
}
return text;
}
答案 0 :(得分:0)
我想你不需要在计算字节数时添加字节值b。
替换
sum += b;
通过
sum++;
答案 1 :(得分:0)
写完所有关闭fos
后。这可确保将所有内容写入磁盘。
然后从文件中读取字节,其中存在一个简单的函数:
byte[] bytes = Files.readAllBytes(Paths.get("..."));