Внимание! Это сайт переехал на www.simplecoding.org

Создание класса для поиска файлов
Тестирование и использование класса поиска
Скачать исходники и программу

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

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

И напишем тесты для проверки работы каждого метода. Тесты создадим с использованием библиотеки 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 кБ)

Автор: Владимир Стаценко
Используются технологии uCoz