Статически проверять наличие файла - PullRequest
1 голос
/ 27 июля 2011

Мне интересно, существует ли какой-нибудь способ проверить, существует ли файл без создания экземпляра java.io.File

Всегда я использовал следующий способ:

File f = new File("./path/to/file");
if (f.exists()) {
    doSomething();
}
else {
    manageError();
}

Но знаюМне нужно проверить некоторые пути к файлам, чтобы создать такие элементы, как регистратор (с log4j), редактор XML и другие структуры проекта, но мне не нужно с ними работать.

По этой причине я хочу знать, если этовозможно.

Я использую J2SE-1.5_22.

Заранее спасибо!

Ответы [ 3 ]

5 голосов
/ 27 июля 2011

Я не вижу, что не так с тем, что вы уже делаете.Создание экземпляра File не приведет к созданию файла на диске или чего-либо еще.Вы всегда можете написать статический метод, если хотите:

public static boolean checkFileExists(string path)
{
    return new File(path).exists();
}

Если это не удовлетворяет вашим требованиям, объясните, пожалуйста, что вы пытаетесь сделать, но это не работает.

1 голос
/ 27 июля 2011

Я думаю, что оригинал авторов java.io.File предполагал, что если вы проверяете наличие файла, вы, вероятно, что-то с ним сделаете: измените его, если он существует, или создайте новый файл, если его нет.1002 *

Решение Джона - это обходной путь, который вы, вероятно, должны добавить к своему Utils.Объекты File довольно легкие и легко выбрасываются.

0 голосов
/ 27 июля 2011

Другой способ - использовать частные классы Java.Хотя я бы не советовал, если вы не знаете, что делаете.

Что-то вроде:

public static boolean fileExists(File file) {
return ((FileSystem.getFileSystem().getBooleanAttributes(file) & FileSystem.BA_EXISTS) != 0);
}

Хотя этот код не будет работать сам по себе, поскольку FileSystem является частнойкласс, но измените его на публичный класс с отражением, и он должен работать.

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