-
-
Notifications
You must be signed in to change notification settings - Fork 1
File Comparison Documentation
Comparing files is essential when validating changes, detecting duplicates, or ensuring data integrity. The file-worker library provides utilities to compare files based on various attributes such as name, extension, size, last modified date, absolute path, and content.
Imagine you are building a version control system where you need to determine if two files are identical or detect minor differences. This library helps you accomplish this efficiently.
- Compare files by attributes like size, extension, and modification date.
- Perform byte-by-byte and line-by-line content comparison.
- Detect duplicate files within a directory.
- Validate file equality based on custom criteria.
To include this library in your Java project, add the following dependency:
Replace the variable ${latestVersion} with the current latest version:
Define version in the gradle.properties file:
fileWorkerVersion=${latestVersion}
or in the build.gradle ext area:
fileWorkerVersion = "${latestVersion}"
Then, add the dependency:
implementation("io.github.astrapi69:file-worker:$fileWorkerVersion")
For automatic version updates:
[versions]
file-worker-version=${latestVersion}
[libraries]
file-worker = { module = "io.github.astrapi69:file-worker", version.ref = "file-worker-version" }
Then, add:
implementation libs.file.worker
Maven dependency is now available on Sonatype. Check out the
Sonatype repository
for the latest snapshots and releases.
<properties>
...
<file-worker.version>${latestVersion}</file-worker.version>
...
</properties>
<dependencies>
...
<dependency>
<groupId>io.github.astrapi69</groupId>
<artifactId>file-worker</artifactId>
<version>${file-worker.version}</version>
</dependency>
...
</dependencies>The CompareFileExtensions class provides methods for detailed file comparison.
File file1 = new File("document1.txt");
File file2 = new File("document2.txt");
IFileCompareResultBean result = CompareFileExtensions.compareFiles(file1, file2);
if (result.getNameEquality()) {
System.out.println("Files have the same name.");
}
if (result.getContentEquality()) {
System.out.println("Files are identical in content.");
}boolean isEqual = CompareFileExtensions.compareFileContentByBytes(file1, file2).getContentEquality();
System.out.println("Are the files identical? " + isEqual);The CompareFileExtensionsTest class verifies these functionalities:
@Test
public void testCompareFiles() throws IOException {
File file1 = new File("test1.txt");
File file2 = new File("test2.txt");
StoreFileExtensions.toFile(file1, "Hello World");
StoreFileExtensions.toFile(file2, "Hello World");
IFileCompareResultBean result = CompareFileExtensions.compareFiles(file1, file2);
assertTrue(result.getContentEquality());
}The SimpleCompareFileExtensions class provides straightforward comparison methods.
boolean isEqual = SimpleCompareFileExtensions.compareFilesByChecksum(file1, file2, MdAlgorithm.MD5);
System.out.println("Are the files identical based on checksum? " + isEqual);boolean sameExtension = SimpleCompareFileExtensions.compareFilesByExtension(file1, file2);
System.out.println("Do the files have the same extension? " + sameExtension);The SimpleCompareFileExtensionsTest class ensures correctness:
@Test
public void testCompareFilesByExtension() throws IOException {
File file1 = new File("test.txt");
File file2 = new File("test.doc");
boolean result = SimpleCompareFileExtensions.compareFilesByExtension(file1, file2);
assertFalse(result);
}The library includes result beans to store file comparison outcomes.
Stores results of file attribute comparison.
FileCompareResultBean result = new FileCompareResultBean(file1, file2);
System.out.println("Name equality: " + result.getNameEquality());Extends FileCompareResultBean to include content comparison.
FileContentResultBean result = new FileContentResultBean(file1, file2);
System.out.println("Content equality: " + result.getContentEquality());The FileCompareResultBeanTest ensures correct behavior:
@Test
public void testEqualsHashcodeAndToString() {
FileCompareResultBean result1 = new FileCompareResultBean(file1, file2);
FileCompareResultBean result2 = new FileCompareResultBean(file1, file2);
assertEquals(result1, result2);
}Similarly, FileContentResultBeanTest verifies content comparisons.
The library helps find duplicate files within a directory.
List<IFileCompareResultBean> duplicates = CompareFileExtensions.findEqualFiles(new File("documents"));
for (IFileCompareResultBean duplicate : duplicates) {
System.out.println("Duplicate found: " + duplicate.getSourceFile().getName());
}List<IFileContentResultBean> identicalFiles = CompareFileExtensions.findEqualFilesWithSameContent(new File("data"));
for (IFileContentResultBean file : identicalFiles) {
System.out.println("Identical file found: " + file.getSourceFile().getName());
}The CompareFileExtensionsTest ensures duplicate detection works:
@Test
public void testFindEqualFiles() throws IOException {
File dir = new File("testDir");
StoreFileExtensions.toFile(new File(dir, "file1.txt"), "Same content");
StoreFileExtensions.toFile(new File(dir, "file2.txt"), "Same content");
List<IFileCompareResultBean> results = CompareFileExtensions.findEqualFiles(dir);
assertEquals(1, results.size());
}The file-worker library provides an extensive toolkit for file comparison. Whether you need simple filename comparisons or deep content analysis, these utilities offer a robust and efficient solution.
Start using it today to improve your file management and validation workflows!
- Create New Files And Directories
- Delete Files Or Directories
- File Comparison Documentation
- File Modification And Merging
- File Reading Documentation
- File Renaming Documentation
- File Search Documentation
- File Sorting Documentation
- File Writing Documentation
- Java File Copy Utilities
- System Utilities Documentation