Тестирование и использование класса поиска
Класс для поиска мы написали. Теперь нужно проверить, как он работает. Для этого, создадим папку с такой структурой:
    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


