Проверить существует ли файл java

Обновлено: 06.07.2024

Чтобы работать с файлами, есть шикарный утилитный класс — java.nio.file.Files . У него есть методы просто на все случаи жизни. Все методы этого класса статические и работают с объектами типа Path. Методов очень много, поэтому мы рассмотрим только основные:

Метод Описание
Создает новый файл с путем path
Создает новую директорию
Создает несколько директорий
Создает временный файл
Создает временную директорию
Удаляет файл или директорию, если она пуста
Копирует файл
Перемещает файл
Проверяет, что путь — это директория, а не файл
Проверяет, что путь — это файл, а не директория
Проверяет, что объект по заданному пути существует
Возвращает размер файла
Возвращает все содержимое файла в виде массива байт
Возвращает все содержимое файла в виде строки
Возвращает все содержимое файла в виде списка строк
Записывает в файл массив байт
Записывает в файл строку
Возвращает коллекцию файлов (и поддиректорий) из заданной директории

2. Создание файлов и директорий

Файлы и директории создавать очень просто. Убедимся на примерах:

Код Примечание
Создает файл
Создает директорию
Создает директорию и все нужные поддиректории, если их не существует.

3. Копирование, перемещение и удаление

Копировать, перемещать и удалять файлы так же легко. На директории это тоже распространяется, но они должны быть пустые.

Код Примечание
Копирует файл
Перемещает и переименовывает файл
Удаляет файл

4. Проверка типа файла и факта существования

Когда у вас есть какой-то путь, полученный извне, вы бы хотели знать, это файл или директория. Ну и вообще: существует такой файл/директория или нет?

Для этого тоже есть специальные методы. Так же можно легко узнать длину файла:

Код Примечание

5. Работа с содержимым файла

И наконец, есть целая серия методов, которые позволяют легко прочитать или записать содержимое файла. Пример:

Как проверить, существует ли файл, прежде чем открывать его для чтения на Java? (эквивалент Perl -e $filename ).

Единственный похожий вопрос на SO касается написания файла и, таким образом, ответил с помощью FileWriter, который здесь явно не применим.

Если возможно, я предпочел бы, чтобы настоящий вызов API возвращал true/false, а не какой-то "Call API", чтобы открыть файл и поймать, когда он выдает исключение, которое вы проверяете "нет файла" в тексте ", но я могу жить с последним.

ОТВЕТЫ

Ответ 1

Ответ 2

Я бы рекомендовал использовать isFile() вместо exists() . Большую часть времени вы пытаетесь проверить, указывает ли путь к файлу не только, что он существует. Помните, что exists() вернет true, если ваш путь указывает на каталог.

new File("C:/").exists() вернет true, но не позволит вам открывать и читать из него как файл.

Ответ 3

Используя nio в Java SE 7,

Если оба существуют и notExists возвращают false, существование файла не может быть проверено. (возможно, нет права доступа к этому пути)

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

Ответ 4

Использование Java 8:

Ответ 5

Это не приведет к созданию физического файла. Просто создаст объект класса File. Чтобы физически создать файл, вы должны явно его создать:

So f.exists() может использоваться для проверки наличия или отсутствия такого файла.

Ответ 6

Ответ 7

Есть несколько способов достичь этого.

В случае просто для существования. Это может быть файл или каталог.

Ответ 8

Вы можете использовать следующее: File.exists()

Ответ 9

первый хит для "java файла существует" в google:

Ответ 10

не делать. Просто поймайте FileNotFoundException. Файловая система должна проверить, существует ли файл в любом случае. Нет смысла делать все это дважды, и несколько причин не делать этого, например:

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

Не пытайтесь угадать систему. Он знает. И не пытайтесь предсказать будущее. В общем, лучший способ проверить, доступен ли какой-либо ресурс, - просто попытаться его использовать.

Ответ 11

Для меня комбинация принятого ответа Шона А. О. Harney и итоговый комментарий Cort3z, по-видимому, являются лучшим решением.

Используется следующий фрагмент:

Надеюсь, это может помочь кому-то.

Ответ 12

Ответ 13

Я знаю, что я немного опаздываю в этой теме. Тем не менее, вот мой ответ, действительный с Java 7 и выше.

отлично удовлетворительно, потому что метод isRegularFile возвращает false , если файл не существует. Поэтому нет необходимости проверять, есть ли Files.exists(. ) .

Обратите внимание, что другие параметры - это параметры, указывающие, как следует обрабатывать ссылки. По умолчанию используются символические ссылки.

Ответ 14

Например, если у вас есть каталог файлов, и вы хотите проверить, существует ли он

exists вернет false, если файл не существует

Ответ 15

Простой пример с хорошей практикой кодирования и охватывающий все случаи:

Ссылка и другие примеры на

Ответ 16

Если вы хотите проверить File в каталоге dir

и проверьте результат check

Ответ 17

Ответ 18

Не используйте конструктор файлов со строкой.
Это может не сработать!
Вместо этого используйте URI:

Ответ 19

File.exists() , чтобы проверить, существует ли файл, он возвращает логическое значение, указывающее статус операции проверки; true, если файл существует; false, если не существует.

Ответ 20

Вы можете использовать следующий код для проверки:

Ответ 21

Вы можете сделать это так

Ответ 22

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

Как я могу проверить, существует ли файл, прежде чем открывать его для чтения в Java (эквивалент Perl -х -e $filename )?

Единственный подобный вопрос на SO касается записи файла и, таким образом, был дан ответ с использованием FileWriter , который, очевидно, здесь неприменим.

Если это возможно, я бы предпочел реальный вызов API, возвращающий true/false, а не какой-то "Call API, чтобы открыть файл и поймать, когда он выдает исключение, которое вы проверяете на 'no file' в тексте", но я могу жить с последним.

Я хочу создать текстовый файл, но если файл уже существует, он не должен создавать новый файл, а должен добавлять текст к содержимому (в конце) существующего файла. Как я могу сделать это в Java? в течение каждой секунды я читаю данные из inputstream когда я прекращаю чтение и снова начинаю читать.

Я бы рекомендовал использовать isFile() вместо exists() . Большую часть времени вы хотите проверить, указывает ли путь к файлу не только на то, что он существует. Помните, что exists() вернет true, если ваш путь указывает на каталог.

new File("C:/").exists() вернет true, но не позволит вам открыть и прочитать его как файл.

С помощью nio в Java SE 7,

Если и exists , и notExists возвращают false, существование файла не может быть проверено. (возможно, нет права доступа к этому пути)

Вы можете проверить, является ли path каталогом или обычным файлом.

Пожалуйста, проверьте этот учебник Java SE 7 .

Использование Java 8:

Это не приведет к созданию физического файла. Будет просто создан объект файла класса. Чтобы физически создать файл, вы должны явно создать его:

Таким образом, f.exists() можно использовать для проверки того, существует ли такой файл или нет.

Есть несколько способов добиться этого.

В случае просто для существования. Это может быть файл или каталог.

Проверьте наличие файла

Вы можете использовать следующее: File.exists()

Мне нужно проверить, существует ли в папке файл xml. DirectoryInfo di = new DirectoryInfo(ProcessingDirectory); FileInfo[] TXTFiles = di.GetFiles(*.xml); if (TXTFiles.Length == 0) < log.Info(no files present) >Это лучший способ проверить, существует ли файл в папке. Мне нужно проверить.

первый хит для "java file exists" в Google:

Не. Просто поймайте FileNotFoundException. Файловая система должна проверить, существует ли файл в любом случае. Нет смысла делать все это дважды, и есть несколько причин не делать этого, таких как:

  • удвоить код
  • проблема с временным окном, из-за которой файл может существовать при тестировании, но не при открытии, или наоборот, и
  • дело в том, что, как показывает существование этого вопроса, вы можете сделать неправильный тест и получить неправильный ответ.

Не пытайтесь переосмыслить систему. Он знает. И не пытайтесь предсказывать будущее. В общем, лучший способ проверить, доступен ли какой- либо ресурс, - это просто попытаться его использовать.

Для меня комбинация принятого ответа Шона A.O. Харни и полученный в результате комментарий Cort3z, по-видимому, являются лучшим решением.

Использовал следующий фрагмент:

Надеюсь, это кому-нибудь поможет.

Я знаю, что немного опоздал в этой теме. Однако вот мой ответ, действительный с Java 7 и выше.

это совершенно satifactory, потому что метод isRegularFile возвращает false , если файл не существует. Поэтому нет необходимости проверять, если Files.exists(. ) .

Обратите внимание, что другие параметры-это параметры, указывающие, как следует обрабатывать ссылки. По умолчанию используются символические ссылки.

Простой пример с хорошей практикой кодирования и охватывающий все случаи :

Ссылка и другие примеры на

Не используйте конструктор файлов со строкой.
Это может не сработать!
Вместо этого используйте URI:

Вы можете сделать это таким образом

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

Похожие вопросы:

У меня возникла проблема с проверкой, существует ли файл в Java. Однако блок IF , похоже, работает, а вот блок ELSE, похоже, нет. видите ли, когда файл существует, он вызовет окно с надписью 'File.

Возможный Дубликат : Как проверить файл, если он существует с подстановочным знаком в Java? Я очень новичок в Java.I, работая над домашним заданием, и в рамках этого я должен проверить, существует.

Как я могу проверить, существует ли файл в файле war? Я знаю, что могу использовать boolean doesExist = new File(myfile).exists(); но как я могу использовать это в классе java на войне.

Я хочу создать текстовый файл, но если файл уже существует, он не должен создавать новый файл, а должен добавлять текст к содержимому (в конце) существующего файла. Как я могу сделать это в Java? в.

Мне нужно проверить, существует ли в папке файл xml. DirectoryInfo di = new DirectoryInfo(ProcessingDirectory); FileInfo[] TXTFiles = di.GetFiles(*.xml); if (TXTFiles.Length == 0) < log.Info(no.

Возможный Дубликат : Питонский способ проверить, существует ли файл? Как проверить, существует ли файл в python? Сценарии в Windows

Работа с файлами в Java. Класс File . Основные методы работы

В данной теме расписаны базовые методы класса File , который есть частью системы ввода/вывода Java. Для рассмотренных методов приведены примеры с объяснениями.

Содержание

  • 1. Создание экземпляра класса File . Конструкторы класса
  • 2. Метод getName() . Получить имя файла или каталога
  • 3. Метод getPath() . Получить имя файла
  • 4. Метод isAbsolute() . Определить, указан ли полный путь к файлу
  • 5. Метод getAbsolutePath() . Получить полный путь к файлу
  • 6. Методы canRead() , canWrite() . Определение того, допускает ли файловый объект чтение и запись
  • 7. Метод exists() . Определение наличия файла (каталога)
  • 8. Метод isDirectory() . Определить, связан ли файловый объект с директорием
  • 9. Метод isFile() . Определить, связан ли файловый объект с файлом
  • 10. Метод isHidden() . Определить, есть ли файловый объект скрытым
  • 11. Метод length() . Определить размер в байтах файла, который связан с файловым объектом
  • 12. Метод delete() . Удаление файла
  • 13. Метод mkdir() . Создание папки или каталога
  • 14. Метод mkdirs() . Создание нескольких вложенных папок
  • 15. Метод renameTo() . Переименование файла
  • 16. Метод getTotalSpace() . Определение объема диска
  • 17. Метод getFreeSpace() . Определить свободное место на диске
  • 18. Метод getUsableSpace() . Определение полезного места на диске

Поиск на других ресурсах:

1. Создание экземпляра класса File . Конструкторы класса

В классе File реализованы несколько конструкторов, каждый из которых позволяет формировать имя файла или каталога разными способами.

Наиболее распространенным есть конструктор, который получает строку типа String . В этой строке задается полное (абсолютное) или сокращенное (относительное) имя файла или каталога, который рассматривается (создается, определяется и т.п.).

Также существуют конструкторы, формирующие имя файла из нескольких частей.

Пример.

Результат выполнения программы

2. Метод getName() . Получить имя файла или каталога

Метод getName() возвращает имя файла или каталога, с которым связана файловая переменная. Если абсолютный путь к имени файла (каталога) содержит несколько уровней вложения, то возвращается непосредственно имя этого файла (каталога). Общая форма использования метода следующая

  • name – переменная типа String , которая есть результатом выполнения метода;
  • fileObj – файловый объект, связанный с файлом или каталогом.

Пример.

  • path – строка типа String , что есть именем файла (каталога), которое было задано при создании файловой переменной fileObj .

Пример.

4. Метод isAbsolute() . Определить, указан ли полный путь к файлу

Метод isAbsolute() позволяет определить, указан ли полный путь к файлу при создании файлового объекта в конструкторе класса File . Общая форма использования метода следующая

  • res – результат, который равен true , если при создании файловой переменной fileObj был задан абсолютный путь.

Пример.

5. Метод getAbsolutePath() . Получить полный путь к файлу

Метод getAbsolutePath() возвращает полный путь к файлу. Общая форма использования метода следующая

  • path – строка типа String , которая есть результатом;
  • fileObj – файловый объект, который связан с файлом, для которого нужно определить абсолютный путь.

Пример.

Результат работы программы

7. Метод exists() . Определение наличия файла (каталога)

Метод exists() предназначен для определения существования файла, ассоциированного с файловым объектом. Общая форма использования метода следующая

  • res – результат работы метода. Если res = true , то заданный файл существует;
  • fileObj – объект, который проверяется.

Пример.

8. Метод isDirectory() . Определить, связан ли файловый объект с директорием

Метод isDirectory() предназначен для определения того, есть ли файл директорием (папкой). Общая форма использования метода следующая

  • res – значение типа bool . Если res=true , то файл есть директорием;
  • fileObj – файловый объект, который проверяется.

Пример.

9. Метод isFile() . Определить, связан ли файловый объект с файлом

Метод isFile() возвращает true , если файловый объект связан с файлом. Общая форма использования метода следующая

  • res – результат вычисления. Если файловый объект есть файлом, то res = true ;
  • fileObj – файловый объект.

Пример.

10. Метод isHidden() . Определить, есть ли файловый объект скрытым
  • fileObj – файловый объект;
  • res – результат работы метода. Если res = true , то файловый объект связан со скрытым файлом.

Пример.

11. Метод length() . Определить размер в байтах файла, который связан с файловым объектом

Метод length() предназначен для определения размера файла и имеет следующую общую форму

Пример.

Результат работы программы

12. Метод delete() . Удаление файла

Метод delete() используется для удаления файла. Общая форма использования метода

  • fileObj – файловый объект, который связан с файлом, который нужно удалить;
  • res – результат выполнения метода. Если res = true , то удаление файла состоялось успешно.

Пример.

13. Метод mkdir() . Создание папки или каталога

Метод mkdir() используется для создания папки (каталога). Общая форма использования метода следующая

  • res – результат типа bool . Если каталог создан успешно, то res = true , в противном случае res = false ;
  • fileObj – объект типа File , который связан с именем создаваемого каталога.

Пример. Создается каталог с именем 123 в текущем каталоге.

Результат работы программы

14. Метод mkdirs() . Создание нескольких вложенных папок

Метод mkdirs() позволяет создать несколько уровней вложений папок за один раз. В отличие от метода mkdir() , этот метод создает уровни вложения папок, которые не существуют. В методе mkdir() чтобы создать подпапку нужно, чтобы предварительно обязательно была созданная папка верхнего уровня.

Общая форма использования метода следующая:

  • fileObj – файловый объект, который содержит строку с именем или именами папок, которые нужно создать;
  • res – результат выполнения метода. Если последовательность папок создана успешно, то res = true .

Пример.

15. Метод renameTo(File). Переименование файла

Метод renameTo() предназначен для переименования файла. Общая форма использования метода следующая

  • res – результат выполнения метода. Если файл переименован успешно, то res = true , иначе res = false ;
  • f1 – файловая переменная, соответствующая файлу-источнику, который нужно переименовать;
  • f2 – файловая переменная, соответствующая новому имени файла-источника f1 после его переименования.

Пример.

16. Метод getTotalSpace() . Определение объема диска

С помощью метода getTotalSpace() можно определить общий размер носителя (диска) в байтах. Метод возвращает результат типа long . Общая форма использования метода следующая

Читайте также: