Обход файлов и каталогов с использованием Java - PullRequest
0 голосов
/ 01 августа 2011

У меня есть небольшой код, который может вернуть список файлов в любом каталоге.

Что мне нужно сделать, это получить Directories и Files в первом указанном каталоге.

Это код, который я использую.

    File dir = new File("C:/myDocument/myFolder");

    String[] children = dir.list();
    if (children == null) {

    } else {
        for (int i=0; i<children.length; i++) {

            String filename = children[i];
            System.out.println(filename);
        }
    }

Другое дело, когда я выбираю путь в Windows 7, я получаю это C:\myFolder\myFolder.Если я использую этот путь в Java, я получаю эту ошибку Invalide Escape sequence Нужно ли изменить ее на C:/myDocument/myFolder, чтобы заставить ее работать.

Справка.

Спасибо

Ответы [ 3 ]

5 голосов
/ 01 августа 2011

Да, косые черты в порядке.Они нормализуются к OS-зависимому разделителю.

Ошибка говорит вам, что \m - недопустимая escape-последовательность.Каждый обратный слеш пытается убежать от следующего символа.Поэтому, если вам нужны косые черты в строке, используйте двойную косую черту: "c:\\myDocuments\\myFolder"

Чтобы получить каталоги и файлы, используйте .listFiles(), а затем file.isDirectory() для проверкиесли это каталог.

1 голос
/ 01 августа 2011

Я использую аналогичный способ очистки данных папок.

    private static void deleteTree(File file)
    {
      if(file.isDirectory())
      {
        File afile[] = file.listFiles();
         System.out.println("Directory: " + file.getFilename);
         if(afile.length > 0)
         {
            for(int i = 0; i < afile.length; i++)
            {
               if(afile[i].isDirectory())
                  System.out.println("Directory: " + afile[i].getFilename);
                  deleteTree(afile[i]);
               else
                  System.out.println("File: " + afile[i].getFilename);
            }
         }
      } else {
       System.out.println("File: " + file.getFilename);
      }
   }
0 голосов
/ 29 июня 2019

Вы можете неправильно использовать File.list (FilenameFilter) для обхода файла, например:

// list files in dir
new File(dir).list(new FilenameFilter() {
    public boolean accept(File dir, String name) {
        String file = dir.getAbsolutePath() + File.separator + name;
        System.out.println(file);
        return false;
    }
});
...