Как проверить существует ли файл по указанному пути
Здравствуйте.
Извеняюсь, может за глупый вопрос.
Собственно вопрос в теме, но еще раз продублирую:
Как проверить существует ли файл по указанному пути.
Т.е. есть строка
String fileName = «C:\data_dir\data_file.txt»;
Вот и надо бы узнать есть ли такой файл.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
как при помощи java script проверить существует ли файл?
Возможно ли это вообще только средствами Java? И можно ли передать переменную в другой htm или asp.
Как можно программно проверить: существует ли файл по указанному пути?
Как можно программно проверить: существует ли файл по указанному пути? Спасибо, ZandR
Как сохранить файл по указанному пути?
XmlSerializer formatter = new XmlSerializer(typeof(Report)); using (FileStream fs = new.
Как создать файл по указанному пути с заданным содержанием
Доброго времени суток всем! Сразу извиняюсь за терминологию, т.к. новичок. Мне нужно создать.
Регистрация: 13.02.2007
Сообщений: 1,255
String fileName = "C:\data_dir\data_file.txt"; if ((new File(fileName)).exists()) < // существует >else < // не существует >
Удачи,
Владимир
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Как сделать, чтобы файл заменился по указанному пути?
Помогите! У меня есть TextBox1 Button1 Button2 Button3 ListBox1 Button1 нажимаешь.
Как открыть файл .exe и .doc по указанному пути через Button
Здравствуйте, собственно вопрос:Как открыть файл .exe и .doc по указанному пути через Button.
Не открывается файл по указанному пути
Добрый вечер! Вот листинг: #include "stdafx.h" #include <stdio.h> #include <conio.h> #include.
Как проверить существование файла в java
У Вас есть a Path экземпляр, представляющий файл или каталог, но тот файл, существует на файловой системе? Действительно ли это читаемо? Перезаписываемый? Исполнимая программа?
Проверка Существования Файла или каталога
- Файл проверяется, чтобы существовать.
- Файл проверяется, чтобы не существовать.
- Состояние файла неизвестно. Этот результат может произойти, когда у программы нет доступа к файлу.
Если оба exists и notExists возвратиться false , существование файла не может быть проверено.
Проверка Доступности Файла
Чтобы проверить, что программа может получить доступ к файлу как необходимый, можно использовать isReadable(Path) , isWritable(Path) , и isExecutable(Path) методы.
Следующий фрагмент кода проверяет, что определенный файл существует и что у программы есть возможность выполнить файл.
Path file = . ; boolean isRegularExecutableFile = Files.isRegularFile(file) & Files.isReadable(file) & Files.isExecutable(file);
Отметьте: Как только любой из этих методов завершается, нет никакой гарантии, что к файлу можно получить доступ. Дефект коллективной безопасности во многих приложениях должен выполнить проверку и затем получить доступ к файлу. Для получения дополнительной информации используйте свою любимую поисковую систему, чтобы искать TOCTTOU (объявленный TOCK-также).
Проверка, определяют Ли Два Пути Местоположение Того же самого Файла
Когда у Вас есть файловая система, которая использует символьные ссылки, возможно иметь два различных пути, которые определяют местоположение того же самого файла. isSameFile(Path, Path) метод сравнивает два пути, чтобы определить, определяют ли они местоположение того же самого файла на файловой системе. Например:
Path p1 = . ; Path p2 = . ; if (Files.isSameFile(p1, p2)) < // Logic when the paths locate the same file >
Ваше использование этой страницы и всего материала на страницах под «Учебным баннером» Java подвергается этим официальным уведомлениям.
Авторское право © 1995, 2012 Oracle и/или его филиалы. Все права защищены.
Проверьте, существует ли файл или каталог в Java
В этом кратком руководстве мы познакомимся с различными способами проверки существования файла или каталога.
Сначала мы начнем с современных API-интерфейсов NIO, а затем рассмотрим устаревшие подходы к вводу-выводу.
2. Использование java.nio.file.Files
Чтобы проверить, существует ли файл или каталог, мы можем использовать метод Files.exists (Path) . Как видно из сигнатуры метода, мы должны сначала получить путь к нужному файлу или каталогу. Затем мы можем передать этот путь в метод Files.exists(Path) :
Path path = Paths.get("does-not-exist.txt"); assertFalse(Files.exists(path));
Поскольку файл не существует, он возвращает false . Также стоит упомянуть, что если метод Files.exists(Path) встречает IOException , он также возвращает false .
С другой стороны, когда данный файл существует, он вернет true , как и ожидалось:
Path tempFile = Files.createTempFile("foreach", "exist-article"); assertTrue(Files.exists(tempFile));
Здесь мы создаем временный файл, а затем вызываем метод Files.exists(Path) .
Это работает даже для каталогов :
Path tempDirectory = Files.createTempDirectory("foreach-exists"); assertTrue(Files.exists(tempDirectory));
Если мы специально хотим знать, существует ли файл или каталог, мы также можем использовать методы Files.isDirectory(Path) или Files.isRegularFile(Path) :
assertTrue(Files.isDirectory(tempDirectory)); assertFalse(Files.isDirectory(tempFile)); assertTrue(Files.isRegularFile(tempFile));
Существует также метод notExists(Path) , который возвращает true , если заданный путь не существует:
assertFalse(Files.notExists(tempDirectory));
Иногда Files.exists(Path) возвращает false , потому что у нас нет необходимых прав доступа к файлам . В таких сценариях мы можем использовать метод Files.isReadable(Path) , чтобы убедиться, что файл действительно доступен для чтения текущему пользователю:
assertTrue(Files.isReadable(tempFile)); assertFalse(Files.isReadable(Paths.get("/root/.bashrc")));
2.1. Символические ссылки
По умолчанию метод Files.exists(Path) следует символическим ссылкам . Если файл A имеет символическую ссылку на файл B , то метод Files.exists(A) возвращает значение true тогда и только тогда, когда файл B уже существует:
Path target = Files.createTempFile("foreach", "target"); Path symbol = Paths.get("test-link-" + ThreadLocalRandom.current().nextInt()); Path symbolicLink = Files.createSymbolicLink(symbol, target); assertTrue(Files.exists(symbolicLink));
Теперь, если мы удалим цель ссылки, Files.exists(Path) вернет false :
Files.deleteIfExists(target); assertFalse(Files.exists(symbolicLink));
Поскольку цель ссылки больше не существует, переход по ссылке ни к чему не приведет, а Files.exists(Path) вернет false .
Можно даже не переходить по символическим ссылкам, передав соответствующий LinkOption в качестве второго аргумента:
assertTrue(Files.exists(symbolicLink, LinkOption.NOFOLLOW_LINKS));
Поскольку сама ссылка существует, метод Files.exists(Path) возвращает значение true. Кроме того, мы можем проверить, является ли путь символической ссылкой, используя метод Files.isSymbolicLink(Path) :
assertTrue(Files.isSymbolicLink(symbolicLink)); assertFalse(Files.isSymbolicLink(target));
3. Использование java.io.File
Если мы используем Java 7 или более новую версию Java, настоятельно рекомендуется использовать современные API-интерфейсы Java NIO для таких требований .
Однако, чтобы убедиться, что файл или каталог существует в устаревшем мире ввода-вывода Java, мы можем вызвать метод exists () для экземпляров File :
assertFalse(new File("invalid").exists());
Если файл или каталог уже существует, он вернет true :
Path tempFilePath = Files.createTempFile("foreach", "exist-io"); Path tempDirectoryPath = Files.createTempDirectory("foreach-exists-io"); File tempFile = new File(tempFilePath.toString()); File tempDirectory = new File(tempDirectoryPath.toString()); assertTrue(tempFile.exists()); assertTrue(tempDirectory.exists());
Как показано выше, метод exists() не заботится о том, файл это или каталог. Поэтому, пока он существует, он будет возвращать true .
Однако метод isFile() возвращает true , если указанный путь является существующим файлом:
assertTrue(tempFile.isFile()); assertFalse(tempDirectory.isFile());
Точно так же метод isDirectory() возвращает true , если указанный путь является существующим каталогом:
assertTrue(tempDirectory.isDirectory()); assertFalse(tempFile.isDirectory());
Наконец, метод canRead() возвращает true , если файл доступен для чтения:
assertTrue(tempFile.canRead()); assertFalse(new File("/root/.bashrc").canRead());
Когда он возвращает false , файл либо не существует, либо текущий пользователь не имеет разрешения на чтение файла.
4. Вывод
В этом кратком руководстве мы увидели, как убедиться, что файл или каталог существует в Java. Попутно мы говорили о современном NIO и устаревших API-интерфейсах ввода-вывода. Кроме того, мы увидели, как NIO API обрабатывает символические ссылки.
Как обычно, все примеры доступны на GitHub .
- 1. Обзор
- 2. Использование java.nio.file.Files
- 2.1. Символические ссылки
Проверка существования файла в Java
Д ля проверки существования файла в Java предназначен метод exists() класса File . Этот метод возвращает true если файл существует и false — в противном случае.
package ru.j4web.examples.java.io; import java.io.File; public class FileChecker < private static final String FILENAME1 = "c:\Projects\J4Web.Ru\Src\" + "JavaIO\FileChecker\file.txt"; private static final String FILENAME2 = "c:\Projects\J4Web.Ru\Src\" + "JavaIO\FileChecker\file1.txt"; public static void main(String[] args) < checkFile(FILENAME1); checkFile(FILENAME2); >private static void checkFile(final String filename) < final File file = new File(filename); System.out.println(filename + ":"); if (file.exists()) < System.out.println("Файл существует."); >else < System.out.println("Файл не существует."); >> >c:ProjectsJ4Web.RuSrcJavaIOFileCheckerfile.txt: Файл существует. c:ProjectsJ4Web.RuSrcJavaIOFileCheckerfile1.txt: Файл не существует.
Полезная информация
- Javadoc класса File
- Создание файла в Java
- Установка прав доступа на файл в Java
- Удаление файла в JavaH
