-
-
Notifications
You must be signed in to change notification settings - Fork 1
File Modification And Merging
Managing files often requires modifying and merging content dynamically. Whether you're updating logs, editing configuration files, or combining multiple directories, the file-worker library provides utilities to modify and merge files and directories efficiently.
Imagine you need to clean up log files by deleting specific lines or merging backup directories while handling conflicts intelligently. This library helps automate such operations with minimal code.
- Modify file content line by line.
- Delete specific lines from a file by index.
- Merge directories while handling conflicts.
- Perform bulk modifications on files.
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 ModifyFileExtensions class provides methods for updating file content efficiently.
Path filePath = Path.of("sample.txt");
ModifyFileExtensions.modifyFile(filePath, (index, line) -> line.toUpperCase());
System.out.println("File content converted to uppercase.");List<File> filesToConcatenate = List.of(new File("file1.txt"), new File("file2.txt"));
File resultFile = new File("merged.txt");
ModifyFileExtensions.concatenateAll(filesToConcatenate, resultFile);
System.out.println("Files merged successfully!");The ModifyFileExtensionsTest class verifies this functionality:
@Test
public void testModifyFile() throws IOException {
Path inputFile = Path.of("test.txt");
ModifyFileExtensions.modifyFile(inputFile, (index, line) -> line + " modified");
List<String> lines = ReadFileExtensions.readLinesInList(inputFile);
assertTrue(lines.get(0).contains("modified"));
}The DeleteLinesByIndexInFile class allows you to remove specific lines from a file.
List<Integer> linesToDelete = List.of(1, 3);
DeleteLinesByIndexInFile deleter = new DeleteLinesByIndexInFile(linesToDelete);
ModifyFileExtensions.modifyFile(Path.of("data.csv"), deleter);
System.out.println("Selected lines deleted from the file.");The DeleteLinesByIndexInFileTest class ensures correct behavior:
@Test
public void testApply() throws IOException {
Path filePath = Path.of("test-data.csv");
List<Integer> linesToDelete = Arrays.asList(1, 4);
ModifyFileExtensions.modifyFile(filePath, new DeleteLinesByIndexInFile(linesToDelete));
List<String> lines = ReadFileExtensions.readLinesInList(filePath);
assertFalse(lines.contains("Line 2"));
}The MergeDirectoryExtensions class helps combine directories while managing file conflicts.
File targetDir = new File("mergedDir");
File dir1 = new File("sourceDir1");
File dir2 = new File("sourceDir2");
MergeDirectoryExtensions.merge(targetDir, dir1, dir2);
System.out.println("Directories merged successfully!");If the same file exists in both directories, the library intelligently resolves conflicts based on timestamps and content differences.
The MergeDirectoryExtensionsTest class ensures directory merging works as expected:
@Test
public void testMerge_TwoDirectories_NoConflicts() throws IOException {
File targetDir = Files.createTempDirectory("target").toFile();
File dir1 = Files.createTempDirectory("dir1").toFile();
File dir2 = Files.createTempDirectory("dir2").toFile();
File file1Dir1 = new File(dir1, "file1.txt");
File file1Dir2 = new File(dir2, "file2.txt");
StoreFileExtensions.toFile(file1Dir1, "content1");
StoreFileExtensions.toFile(file1Dir2, "content2");
MergeDirectoryExtensions.merge(targetDir, dir1, dir2);
assertTrue(new File(targetDir, "file1.txt").exists());
assertTrue(new File(targetDir, "file2.txt").exists());
}When merging directories, you can choose between different strategies:
-
TARGET_AS_MASTER: Moves files from source to target and removes duplicates. -
SOURCE_TO_TARGET: Copies files from source to target without removing duplicates.
MergeStrategy strategy = MergeStrategy.TARGET_AS_MASTER;
MergeDirectoryExtensions.merge(targetDir, dir1, dir2, strategy);
System.out.println("Merged with strategy: " + strategy);@Test
public void testMergeDirectory() throws IOException {
File leftDir = new File("leftDir");
File rightDir = new File("rightDir");
MergeDirectoryExtensions.merge(leftDir, rightDir);
assertTrue(new File(leftDir, "commonFile.txt").exists());
}The file-worker library provides robust tools for modifying files, deleting specific content, and merging directories efficiently. Whether you're processing logs, editing data, or managing large file structures, this library simplifies file handling.
Start using it today to automate your file operations and enhance productivity!
- 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