Проверить существует ли файл java
Чтобы работать с файлами, есть шикарный утилитный класс — 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 . Общая форма использования метода следующая
Читайте также: