понедельник, 1 августа 2011 г.

Java. Найти файл, удалить файл.

Задачи, алгоритм


- Найти файлы с расширением .xml в  директории А
- удалить эти файлы
- найти файлы в директории Б
- скопировать файлы из директории Б в директорию А
- скопировать список файлов в файл files.txt

В этом посте описаны первые 2 шага.

Что ж, алгоритм понятен, переходим к кодингу. Лезем в гугль и вбиваем там "Java найти файлы в директории". Запрос лучше конечно без кавычек, иначе гугль будет искать точное совпадение, а нам это не с руки.

Сразу получаем результат - http://www.javatalks.ru/sutra23249.php

Этот код выдает список всех файлов, а нам надо только xml. Недолго думая, я решил просто выяснить расширение у полученных файлов.

Гугль выдает отличные результаты - http://blog.dimmduh.com/2011/05/java_19.html

Ну и в конце надо пройтись по списку и удалить найденные файлы. Для удаления сойдет код отсюда - http://www.roseindia.net/java/beginners/DeleteFile.shtml


В итоге получаем следующий код:

public class someclass {


private static void deletefile(String file){
File f1 = new File(file);
boolean success = f1.delete();
if (!success){
System.out.println("Deletion failed.");
System.exit(0);
}else{
System.out.println("File deleted.");
  }
}


public static String getFileExtention(String filename){
int dotPos = filename.lastIndexOf(".") + 1;
return filename.substring(dotPos);
}

public static void main(String[] args) {


String list[] = new File("C:\\files\\").list();
for(int i = 0; i < list.length; i++)
 {

   String fileext = getFileExtention(list[i]);
 
   if (fileext.equalsIgnoreCase("xml")) // тогда удалить файл
    deletefile("C:\\files\\"+list[i]);
 
 }

}
}

PS. Сначала я пытался сделать проверку fileext == "xml", но это не прокатило. Со строками лучше использовать функции equals.

Для копирования файлов я использовал метод copyfile отсюда - http://www.roseindia.net/java/beginners/CopyFile.shtml

А запись в файл - http://www.rte1.ru/softsamples/Java_WriteToFile.html

2 комментария:

  1. Создать файл:

    f=new File("\\dir\\file.txt");
    if(!f.exists()) f.createNewFile();

    Записать файл:

    PrintWriter zzz = null;
    try
    {
    zzz = new PrintWriter(new FileOutputStream("/dir/my_test_file"));
    }
    catch(FileNotFoundException e)
    {
    // System.out.println("Ошибка открытия файла my_test_file.txt");
    // System.exit(0);
    }
    zzz.println("Start process");

    zzz.close();
    //!----------- записать в файл //

    ОтветитьУдалить
  2. удаляет файлы то ? или нет?

    ОтветитьУдалить