Обновил код, добавил комменты
package com.javarush.task.pro.task15.task1504;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Scanner;
/*
Перепутанные байты
*/
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String src = scan.nextLine();
String dest = scan.nextLine();
byte[] byteArray;
int buffer = 0;
try (InputStream reader = Files.newInputStream(Paths.get(src));
OutputStream writer = Files.newOutputStream(Paths.get(dest))) {
byteArray = Files.readAllBytes((Path) reader); //считываем массив байт
for (int i = 0; i<byteArray.length; i++) {
byte temp = 0;
if (i % 2 != 0) { //условие — поменять местами чет и нечет. То есть, если i неч, то надо сдвинуть его вправо
temp = byteArray[i + 1];
byteArray[i + 1] = byteArray[i];
byteArray[i] = temp;
if (byteArray[i] == byteArray[byteArray.length-1] && byteArray[byteArray.length-1]%2==0) { //если счетчки дошел до последнего элемента и последний элемент четный, то меняем его с предыд.
byte temp2 = 0;
temp = byteArray[byteArray.length-2];
byteArray[byteArray.length-2] = byteArray[byteArray.length-1];
byteArray[byteArray.length-1] = temp2;
} else { //если послед. элеменет нечетный, то оставляем как есть.
continue;
}
}
} writer.write(byteArray, 0, buffer);
} catch(IOException e) {
System.out.println("Ошибка. Файл не найден или не удалось считать-записать инфо");
e.printStackTrace();
}
//напишите тут ваш код
}
}