Определите, хранят ли два файла то же содержание

Как Вы записали бы функцию Java boolean sameContent(Path file1,Path file2)который определяет, указывают ли два данных пути на файлы, которые хранят то же содержание? Конечно, во-первых, я проверил бы, являются ли размеры файла тем же. Это - необходимое условие для хранения того же содержания. Но затем я хотел бы слушать Ваши подходы. Если эти два файла хранятся на том же жестком диске (как в большинстве моих случаев), это - вероятно, не лучший способ перейти слишком много раз между этими двумя потоками.

61
задан 9 December 2014 в 15:32

2 ответа

Так как Java 12 там является методом Files.mismatch, который возвращается -1, если нет никакого несоответствия в содержании файлов. Таким образом функция была бы похожа на следующее:

private static boolean sameContent(Path file1, Path file2) throws IOException {
    return Files.mismatch(file1, file2) == -1;
}
3
ответ дан 31 October 2019 в 15:42
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);

   }
}

это работало на меня :)

0
ответ дан 31 October 2019 в 15:42

Другие вопросы по тегам:

Похожие вопросы: