Как относиться к пакету Java как к папке с файлами? - PullRequest
1 голос
/ 14 июня 2019

Я хочу иметь возможность перебирать пакет файлов, как если бы пакет был папкой.

Что-то похожее на приведенное ниже (сценарии - это пакет java):

        File scriptFolder = new File("scripts").getAbsoluteFile();

Появляющиеся пакеты не обрабатываются как папки.Если я жестко закодировал путь C:\Users\...\project_folder\...\scripts, метод File.isFile() возвращает ложь для пакета.Если я сделаю new File (C:\Users\...\project_folder\...\scripts\script).isFile(), я получу правду

Я хочу получить файл папки, чтобы я мог получить список файлов в папке и перебрать его.

Ответы [ 3 ]

1 голос
/ 14 июня 2019

Метод .isFile() возвращает true, только если вы ссылаетесь на обычный файл jane normal. Если вы ссылаетесь на каталог, он возвращает false. Попробуйте .isDirectory() или возможно .exists().

Или нет; нет реальной необходимости:

File[] filesInDir = new File("C:\\Users\\....\\scripts").listFiles();
if (filesInDir == null) {
    // this means it wasn't a directory or didn't exist or isn't readable
} else {
    for (File child : filesInDir) {
        // called for each file in dir
    }
}
1 голос
/ 14 июня 2019

Официальные javadocs говорят это о File#isFile():

Проверяет, является ли файл, обозначенный этим абстрактным путем, нормальным файлом.Файл normal , если он не является каталогом и, кроме того, удовлетворяет другим системно-зависимым критериям.Любой файл не из каталога, созданный приложением Java, гарантированно будет нормальным файлом.

Вы можете проверить, является ли это каталог с помощью File#isDirectory(), затем, если это так, вы можете перечислить его содержимое с помощью File#listFiles().

0 голосов
/ 14 июня 2019

Если я не пропустил что-то в вашем вопросе C: \ Users ... \ project_folder ... \ scripts - это каталог, поэтому isFile () вернет false, потому что это не файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...