Создание приложения для поиска файлов на Java
Тестирование и использование класса поиска
Класс для поиска мы написали. Теперь нужно проверить, как он работает. Для этого, создадим папку с такой структурой:
folderForTests
folder1
emptyFolder
file11.txt
folder2
file22.html
file21.txt
file1.txt
file2.txt
И напишем тесты для проверки работы каждого метода. Тесты создадим с использованием библиотеки JUnit. Описывать использование этой библиотеки я не буду. Это не тема данной статьи, к тому же, подробные инструкции можно найти на официальном сайте этой библиотеки.
Сами тесты достаточно простые. Идея такая, мы используем наш класс для анализа созданной папки, и проверяем результаты.
Полностью класс тестов можно посмотреть в исходниках, а здесь я покажу только его фрагмент:
-
/*Задаем папку для поиска*/
-
String startPath = "folderForTests";
-
/*Создаем экземпляр класса поиска*/
-
FileFinder finder = new FileFinder();
-
/*Начинаем поиск*/
-
/*Проверяем общее количество найденных объектов*/
-
assertEquals(result.size(), 8);
-
/*Проверяем общий размер всех файлов в папке*/
-
assertEquals(finder.getDirectorySize(), 209);
-
/*Проверяем количество найденных папок*/
-
assertEquals(finder.getDirectoriesNumber(), 3);
-
/*Проверяем количество найденных файлов*/
-
assertEquals(finder.getFilesNumber(), 5);
Использование нашего класса в программе ничуть не сложнее, чем использование любого другого класса. В первую очередь, импортируем класс.
import searchtools.FileFinder;
Затем создаем экземпляр класса, и вызываем нужный метод. Например,
-
FileFinder finder = new FileFinder();
-
try {
-
}
-
}
Посмотреть свойства найденных объектов тоже не сложно (мы имеем список с объектами типа 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] регулярное выражение
-
*/
-
//проверяем, заданы ли параметры поиска
-
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++) {
-
if(curObject.isDirectory()) {
-
curObject.getName() + " (папка)");
-
}
-
else {
-
+ " (" + curObject.length() + " байт)");
-
}
-
}
-
" файлов и " + finder.getDirectoriesNumber() +
-
" папок.");
-
}
-
}
-
}
-
else {
-
"начальная_папка <регулярное_выражение>n");
-
}
-
}
-
}
Скачать:
исходники класса поиска с тестами (FileFinding_src.zip - 12 кБ)
исходники программы поиска (FileSearchProgram_src.zip - 9 кБ)
Страницы: 1 2
Понравилась статья? Подпишитесь на продолжение
!
Опубликовано в Java
Комментарии (2)
Вы можете отслеживать обсуждение записи с помощью RSS 2.0 ![]()
Вы также можете оставить комментарий, или трекбек с Вашего сайта.
Оставить комментарий








Спасибо! Этот класс мне очень помог! Есть одно замечание:
в методе search
в строке File[] list = topDirectory.listFiles();
list может принять значение null (если доступ к папке запрещен) и далее программа генерирует ошибку, поэтому после указанной строки необходимо, судя по всему, вставить проверку на null: что то вроде этого: if (list == null){
list = new File[]{};
}
Согласен. Действительно, пропустил этот момент.
Просто тестировал только под Windows и с админовскими правами. Поэтому закрытых папок не было в принципе.
По-моему, в такой ситуации лучше просто прервать выполнение:
if (list == null) {return;
}
Ну и, конечно, можно генерировать исключение (все зависит от требований к программе)
if (list == null) {throw new Exception("....");
}