Как Вы записали бы функцию Java boolean sameContent(Path file1,Path file2)
который определяет, указывают ли два данных пути на файлы, которые хранят то же содержание? Конечно, во-первых, я проверил бы, являются ли размеры файла тем же. Это - необходимое условие для хранения того же содержания. Но затем я хотел бы слушать Ваши подходы. Если эти два файла хранятся на том же жестком диске (как в большинстве моих случаев), это - вероятно, не лучший способ перейти слишком много раз между этими двумя потоками.
Так как Java 12 там является методом Files.mismatch, который возвращается -1
, если нет никакого несоответствия в содержании файлов. Таким образом функция была бы похожа на следующее:
private static boolean sameContent(Path file1, Path file2) throws IOException {
return Files.mismatch(file1, file2) == -1;
}
package test;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import static org.junit.Assert.assertEquals;
public class CSVResultDIfference {
@Test
public void csvDifference() throws IOException {
Path file_F = FileSystems.getDefault().getPath("C:\\Projekts\\csvTestX", "yolo2.csv");
long size_F = Files.size(file_F);
Path file_I = FileSystems.getDefault().getPath("C:\\Projekts\\csvTestZ", "yolo2.csv");
long size_I = Files.size(file_I);
assertEquals(size_F, size_I);
}
}
это работало на меня :)