Skip to content

File Search Documentation

Asterios Raptis edited this page Feb 10, 2025 · 3 revisions

Introduction

Efficiently searching for files within directories is essential for many applications. Whether you need to locate configuration files, find duplicate files, or search for specific patterns, the file-worker library provides robust tools for file and directory searching.

Imagine you are working on a project where you need to find log files with a specific prefix, count files in a directory, or recursively locate files matching a pattern. This library enables these tasks with ease.

Features Overview

  • Locate files based on name, extension, or content.
  • Search directories recursively for matching files.
  • Count files within a directory efficiently.
  • Retrieve project-specific paths dynamically.

Getting Started

For installation and dependencies, refer to the Getting Started guide.


Searching for Files with FileSearchExtensions

The FileSearchExtensions class provides static utility methods for finding files.

Example: Searching for Files by Prefix and Extension

File directory = new File("logs");
List<File> logFiles = FileSearchExtensions.findFilesWithPrefixAndExtension(directory, "logfile", "txt");

for (File file : logFiles) {
    System.out.println("Found log file: " + file.getName());
}

Example: Recursive File Search

List<File> allTxtFiles = FileSearchExtensions.findFilesWithPrefixAndExtensionRecursive(directory, "logfile", "txt");

System.out.println("Total log files found: " + allTxtFiles.size());

Unit Test Coverage

The FileSearchExtensionsTest class ensures functionality:

@Test
public void testFindFilesWithPrefixAndExtensionRecursive() {
    File directory = new File("testDir");
    List<File> files = FileSearchExtensions.findFilesWithPrefixAndExtensionRecursive(directory, "logfile", "txt");
    assertEquals(3, files.size());
}

Finding Paths with PathFinder

The PathFinder class helps retrieve project-related paths dynamically.

Example: Getting the Project Directory

File projectRoot = PathFinder.getProjectDirectory();
System.out.println("Project directory: " + projectRoot.getAbsolutePath());

Example: Getting Common Project Folders

File srcMainJava = PathFinder.getSrcMainJavaDir();
System.out.println("Main Java Source Directory: " + srcMainJava.getAbsolutePath());

Unit Test Coverage

@Test
public void testGetProjectDirectory() {
    File projectDir = PathFinder.getProjectDirectory();
    assertTrue(projectDir.exists());
}

Counting Files in a Directory

The library provides methods to count files efficiently.

Example: Counting All Files

long fileCount = FileSearchExtensions.countAllFilesInDirectory(new File("data"), 0, true);

System.out.println("Total files in directory: " + fileCount);

Unit Test Coverage

@Test
public void testCountAllFilesInDirectory() {
    File directory = new File("testDir");
    long count = FileSearchExtensions.countAllFilesInDirectory(directory, 0, true);
    assertTrue(count > 0);
}

Managing Search Attributes with SearchFileAttributesBean

The SearchFileAttributesBean class encapsulates file search attribute flags.

Example: Ignoring Specific File Attributes

SearchFileAttributesBean attributes = SearchFileAttributesBean.builder()
    .ignoreContentEquality(true)
    .ignoreLastModified(true)
    .build();

System.out.println("Ignore content comparison: " + attributes.isIgnoreContentEquality());

Unit Test Coverage

@Test
public void testSearchFileAttributesBean() {
    SearchFileAttributesBean attributes = new SearchFileAttributesBean(true, false, true, false, true);
    assertTrue(attributes.isIgnoreContentEquality());
}

Checking If a File Exists

The library allows checking whether a file exists in a directory.

Example: Checking for a File

boolean fileExists = FileSearchExtensions.containsFile(new File("data"), "config.json");

System.out.println("Config file exists: " + fileExists);

Unit Test Coverage

@Test
public void testContainsFile() {
    File directory = new File("config");
    boolean exists = FileSearchExtensions.containsFile(directory, "settings.xml");
    assertTrue(exists);
}

Conclusion

The file-worker library simplifies file searching and directory traversal, making it a valuable tool for locating, counting, and managing files efficiently.

Start using it today to streamline your file search operations!

Clone this wiki locally