Как проверить, существует ли файл, прежде чем открывать его для чтения на Java? (эквивалент Perl -e $filename
).
Единственный похожий вопрос на SO касается написания файла и, таким образом, ответил с помощью FileWriter, который здесь явно не применим.
Если возможно, я предпочел бы, чтобы настоящий вызов API возвращал true/false, а не какой-то "Call API", чтобы открыть файл и поймать, когда он выдает исключение, которое вы проверяете "нет файла" в тексте ", но я могу жить с последним.
Используя java.io.File
:
File f = new File(filePathString);
if(f.exists() && !f.isDirectory()) {
// do something
}
if(f.isFile())
используйте if(f.isFile())
.
Я бы рекомендовал использовать isFile()
вместо exists()
. Большую часть времени вы пытаетесь проверить, указывает ли путь к файлу не только, что он существует. Помните, что exists()
вернет true, если ваш путь указывает на каталог.
new File("path/to/file.txt").isFile();
new File("C:/").exists()
вернет true, но не позволит вам открывать и читать из него как файл.
true
если в текущем каталоге /path
new File("file.txt").exists()
true
полный путь /path/to/file.txt
, ответ будет большое нет (если не существует другого файла /path/file.txt
).
Используя nio в Java SE 7,
import java.nio.file.*;
Path path = Paths.get(filePathString);
if (Files.exists(path)) {
// file exist
}
if (Files.notExists(path)) {
// file is not exist
}
Если оба существуют и notExists возвращают false, существование файла не может быть проверено. (возможно, нет права доступа к этому пути)
Вы можете проверить, является ли путь каталогом или обычным файлом.
if (Files.isDirectory(path)) {
// path is directory
}
if (Files.isRegularFile(path)) {
// path is regular file
}
Проверьте этот учебник Java SE 7.
java.nio.file.Files.exists()
намного быстрее, чем java.io.File.exists()
(из моего небольшого теста на единственном тестированном компьютере: Windows Server 2012 под управлением Java 1.7.0_45 x64).
Использование Java 8:
if(Files.exists(Paths.get(filePathString))) {
// do something
}
Files.exists()
принимает два аргумента. Как правило, вам нужно что-то вроде Files.exists(path, LinkOption.NOFOLLOW_LINKS )
.
File f = new File(filePathString);
Это не приведет к созданию физического файла. Просто создаст объект класса File. Чтобы физически создать файл, вы должны явно его создать:
f.createNewFile();
So f.exists()
может использоваться для проверки наличия или отсутствия такого файла.
f.isFile() && f.canRead()
-e
также гарантирует, что приложение "может читать" файл?
Вы можете использовать следующее: File.exists()
первый хит для "java файла существует" в google:
import java.io.*;
public class FileTest {
public static void main(String args[]) {
File f = new File(args[0]);
System.out.println(f + (f.exists()? " is found " : " is missing "));
}
}
Есть несколько способов достичь этого.
В случае просто для существования. Это может быть файл или каталог.
new File("/path/to/file").exists();
Проверить файл
File f = new File("/path/to/file");
if(f.exists() && f.isFile()) {}
Проверьте каталог.
File f = new File("/path/to/file");
if(f.exists() && f.isDirectory()) {}
Java 7 способ.
Path path = Paths.get("/path/to/file");
Files.exists(path) // Existence
Files.isDirectory(path) // is Directory
Files.isRegularFile(path) // Regular file
Files.isSymbolicLink(path) // Symbolic Link
не делать. Просто поймайте FileNotFoundException.
Файловая система должна проверить, существует ли файл в любом случае. Нет смысла делать все это дважды, и несколько причин не делать этого, например:
Не пытайтесь угадать систему. Он знает. И не пытайтесь предсказать будущее. В общем, лучший способ проверить, доступен ли какой-либо ресурс, - просто попытаться его использовать.
Для меня комбинация принятого ответа Шона А. О. Harney и итоговый комментарий Cort3z, по-видимому, являются лучшим решением.
Используется следующий фрагмент:
File f = new File(filePathString);
if(f.exists() && f.isFile()) {
//do something ...
}
Надеюсь, это может помочь кому-то.
Также стоит ознакомиться с Commons FileUtils https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/FileUtils.html. Здесь есть дополнительные методы для управления файлами и часто лучше, чем JDK.
Я знаю, что я немного опаздываю в этой теме. Тем не менее, вот мой ответ, действительный с Java 7 и выше.
Следующий фрагмент
if(Files.isRegularFile(Paths.get(pathToFile))) {
// do something
}
отлично удовлетворительно, потому что метод isRegularFile
возвращает false
, если файл не существует. Поэтому нет необходимости проверять, есть ли Files.exists(...)
.
Обратите внимание, что другие параметры - это параметры, указывающие, как следует обрабатывать ссылки. По умолчанию используются символические ссылки.
Files.notExists
, Files.isDirectory
и Files.isRegularFile.
Лучшая альтернатива этому: path.toFile().exists()
Например, если у вас есть каталог файлов, и вы хотите проверить, существует ли он
File tmpDir = new File("/var/tmp");
boolean exists = tmpDir.exists();
exists
вернет false, если файл не существует
источник: https://alvinalexander.com/java/java-file-exists-directory-exists
File.exists()
, чтобы проверить, существует ли файл, он возвращает логическое значение, указывающее статус операции проверки; true, если файл существует; false, если не существует.
File f = new File("c:\\test.txt");
if(f.exists()){
System.out.println("File existed");
}else{
System.out.println("File not found!");
}
Не используйте конструктор файлов со строкой.
Это может не сработать!
Вместо этого используйте URI:
File f = new File(new URI("file:///"+filePathString.replace('\\', '/')));
if(f.exists() && !f.isDirectory()) {
// to do
}
new File("/path/to/file").exists();
выполнит трюк
File
в каталоге dir
String directoryPath = dir.getAbsolutePath()
boolean check = new File(new File(directoryPath), aFile.getName()).exists();
и проверьте результат check
Вы можете сделать это так
import java.nio.file.Paths;
String file = "myfile.sss";
if(Paths.get(file).toFile().isFile()){
//...do somethinh
}
Вы можете использовать следующий код для проверки:
import java.io.File;
class Test{
public static void main(String[] args){
File f = new File(args[0]); //file name will be entered by user at runtime
System.out.println(f.exists()); //will print "true" if the file name given by user exists, false otherwise
if(f.exists())
{
//executable code;
}
}
}
Чтобы проверить, существует ли файл, просто импортируйте библиотеку java.io. *
File f = new File("C:\\File Path");
if(f.exists()){
System.out.println("Exists"); //if file exists
}else{
System.out.println("Doesn't exist"); //if file doesn't exist
}
Источник: http://newsdivariotipo.altervista.org/java-come-controllare-se-un-file-esiste/
canRead
,canWrite
иcanExecute
для проверить это.