Создание приложения для поиска файлов на Java

Владимир | | Java.

Тестирование и использование класса поиска

Класс для поиска мы написали. Теперь нужно проверить, как он работает. Для этого, создадим папку с такой структурой:

    folderForTests
          folder1
                emptyFolder
                file11.txt
          folder2
                file22.html
                file21.txt
          file1.txt
          file2.txt

И напишем тесты для проверки работы каждого метода. Тесты создадим с использованием библиотеки JUnit. Описывать использование этой библиотеки я не буду. Это не тема данной статьи, к тому же, подробные инструкции можно найти на официальном сайте этой библиотеки.

Сами тесты достаточно простые. Идея такая, мы используем наш класс для анализа созданной папки, и проверяем результаты.

Полностью класс тестов можно посмотреть в исходниках, а здесь я покажу только его фрагмент:

/*Задаем папку для поиска*/
String startPath = "folderForTests";
/*Создаем экземпляр класса поиска*/
FileFinder finder = new FileFinder();
/*Начинаем поиск*/
List result = finder.findAll(startPath);
/*Проверяем общее количество найденных объектов*/
assertEquals(result.size(), 8);
/*Проверяем общий размер всех файлов в папке*/
assertEquals(finder.getDirectorySize(), 209);
/*Проверяем количество найденных папок*/
assertEquals(finder.getDirectoriesNumber(), 3);
/*Проверяем количество найденных файлов*/
assertEquals(finder.getFilesNumber(), 5);

Использование нашего класса в программе ничуть не сложнее, чем использование любого другого класса. В первую очередь, импортируем класс.
import searchtools.FileFinder;
Затем создаем экземпляр класса, и вызываем нужный метод. Например,

FileFinder finder = new FileFinder();
try {
    List res = finder.findAll("имя_папки");
}
catch(Exception err) {
    System.out.println(err.getMessage());
}

Посмотреть свойства найденных объектов тоже не сложно (мы имеем список с объектами типа File, и можем использовать любой метод этого класса).

В качестве примера напишем консольную программу, которая выводит список найденных файлов с указанием их размера. Папка для поиска и регулярные выражения задаются в параметрах командной строки.

import java.io.File;
import java.util.List;
import searchtools.FileFinder;

/**
 * Программа поиска файлов
 * Параметры поиска:
 * 1 - начальная директория (папка) поиска
 * 2 - регулярное выражение (необязательный)
 * Например:
 * java -jar FileSearchProgram.jar C:junit3.8.1
 * java -jar FileSearchProgram.jar C:junit3.8.1 .*.html
 *
 * @author Стаценко Владимир
 * http://www.vova-prog.narod.ru
 */
public class Main {

    /** Создает экземпляры Main */
    public Main() {
    }

    /**
     * @param args[0] начальная директория (папка) поиска
     * @param args[1] регулярное выражение
     */
    public static void main(String[] args) {
        //проверяем, заданы ли параметры поиска
        if(args != null && args.length >= 1) {
            FileFinder finder = new FileFinder();
            try {
                List searchRes = null;
                //если задано регулярное выражение...
                if(args.length == 2) {
                    //...ищем только соответствующие объекты
                    searchRes = finder.findAll(args[0], args[1]);
                }
                //если нет...
                else {
                    //...ищем все подряд
                    searchRes = finder.findAll(args[0]);
                }
                //выводим результаты
                for(int i = 0; i < searchRes.size(); i++) {
                    File curObject = (File)searchRes.get(i);
                    if(curObject.isDirectory()) {
                        System.out.println(
                                curObject.getName() + " (папка)");
                    }
                    else {
                        System.out.println(curObject.getName()
                                + " (" + curObject.length() + " байт)");
                    }
                }
                System.out.println("Найдено " + finder.getFilesNumber() +
                        " файлов и " + finder.getDirectoriesNumber() +
                        " папок.");
            }
            catch(Exception err) {
                System.out.println(err.getMessage());
            }
        }
        else {
            System.out.println("Не заданы параметры поиска.n" +
                    "начальная_папка <регулярное_выражение>n");
        }
    }
}

Скачать:

исходники класса поиска с тестами (FileFinding_src.zip — 12 кБ)

исходники программы поиска (FileSearchProgram_src.zip — 9 кБ)

консольную программу поиска (fileSearchProgram.zip — 4 кБ)

Постовой

Широкий выбор авто в Одессе. Лучшие цены на Chery в Одессе

Страница: 1 2