I have written a program that inputs a file, reverses the bytes and writes that into another file. Then. it reverses the reversed file and outputs it into another file. However, in in the end, when I am supposed to get the same file again, it comes back corrupted. I have searched this up and couldn't find a solution.
The reversing code is working. I have tested it. I would be very happy if you tell me what I am doing wrong/missing.
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);
---The reversing method
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;
}
After writing all close
fos
. This ensures that everything is written to disk.Then read the bytes from the file, for which there exists a simple function: