Bir faylın Java'da olub olmadığını necə yoxlamaq olar?

Java faylını oxumaq üçün açmadan əvvəl bir faylın olub olmadığını necə yoxlamaq olar? ( -e $filename bərabərdir).

SO-yə aid olan yeganə sual faylın yazılmasına aiddir və beləliklə, FileWriter-in köməyi ilə burada cavab vermir.

Mümkünsə, mətndə "fayl yox" deyə bir istisna atdığınızda faylın açılması və tutulması üçün bir növ "Call API" yerinə bir real API çağırışının gerçək / yanlışlığını qaytarmasını üstün tuturam İkincisi ilə yaşayıram.

727
29 нояб. DVK 29 noyabrda təyin olundu. 2009-11-29 23:32 '09 da 23:32 'da 2009-11-29 23:32
ответ 21 cavab

java.io.File istifadə:

 File f = new File(filePathString); if(f.exists()  !f.isDirectory()) { // do something } 
1211
29 нояб. Cavab Seon AO Harney Noyabr 29 tərəfindən verilir 2009-11-29 23:35 '09 at 23:35 'da 2009-11-29 23:35

isFile() əvəzinə exists() istifadə edərək isFile() . Faylın yolunun yalnız mövcud olmadığını yoxlaya biləcəyini yoxlamaq üçün cəhd etdiyiniz zamanın əksəriyyəti. Yolu bir exists() yönəldərsə, exists() olduğunu unutmayın exists() .

 new File("path/to/file.txt").isFile(); 
border=0

new File("C:/").exists() , həqiqətə dönəcək, ancaq fayl açmaq və oxumaq üçün icazə verməyəcəkdir.

396
29 нояб. Chris Dail tərəfindən verilmiş cavab 29 noyabr 2009-11-29 23:42 '09 saat 23:42 'da 2009-11-29 23:42

Java SE 7'de nio istifadə edərək,

 import java.nio.file.*; Path path = Paths.get(filePathString); if (Files.exists(path)) { // file exist } if (Files.notExists(path)) { // file is not exist } 

Hər ikisi mövcud və yoxsa, səhv qayıdırsa, faylın mövcudluğu təsdiq edilə bilməz. (bəlkə də bu yola çıxmaq üçün icazə verilmir)

Yolun bir qovluq və ya müntəzəm bir fayl olub-olmadığını yoxlaya bilərsiniz.

 if (Files.isDirectory(path)) { // path is directory } if (Files.isRegularFile(path)) { // path is regular file } 

Bu Java SE 7 təlimatını nəzərdən keçirin .

128
22 авг. cavab Wonil 22 aug verilir . 2013-08-22 06:04 '13 at 06:04 2013-08-22 06:04

Java 8 istifadə:

 if(Files.exists(Paths.get(filePathString))) { // do something } 
39
01 июня '16 в 16:33 2016-06-01 16:33 cavab Wendel 01 iyun '16 'da 16:33 2016-06-01 16:33 tarixində verilir
 File f = new File(filePathString); 

Bu fiziki bir fayl yaratmaz. Sınıf Dosyası'nın bir obyektini yaradın. Fiziki olaraq bir fayl yaratmaq üçün bunu açıq şəkildə yaratmalısınız:

 f.createNewFile(); 

Belə ki, f.exists() bu faylın varlığını və ya olmamasını yoxlamaq üçün istifadə edilə bilər.

27
28 мая '13 в 13:46 2013-05-28 13:46 Cavab verilən rizwan May 28, '13 'da 1:46 2013-05-28 13:46
 f.isFile()  f.canRead() 
24
30 нояб. Cavabın cavabı 30 noyabrdır. 2009-11-30 18:03 '09 at 18:03 'da 2009-11-30 18:03

Google'da "java faylı mövcuddur" üçün ilk hit:

 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 ")); } } 
14
29 нояб. Cavab yalnız noyabrın 29-da verilir. 2009-11-29 23:36 '09 da 23:36 'da 2009-11-29 23:36

Aşağıdakılardan istifadə edə bilərsiniz: File.exists()

14
29 нояб. Cavab 29 noyabrda Francis Upton tərəfindən verilir. 2009-11-29 23:35 '09 at 23:35 'da 2009-11-29 23:35

Buna nail olmaq üçün bir neçə yol vardır.

  1. Yalnız varlıq üçün. Bu fayl və ya kataloq ola bilər.

     new File("/path/to/file").exists(); 
  2. Faylı yoxlayın

     File f = new File("/path/to/file"); if(f.exists()  f.isFile()) {} 
  3. Dizini yoxlayın.

     File f = new File("/path/to/file"); if(f.exists()  f.isDirectory()) {} 
  4. Java 7 yol.

     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 
11
31 авг. Cavab Raghu K Nair 31 avqustda verilir. 2016-08-31 21:07 '16 at 21:07 2016-08-31 21:07

etmək deyil. Yalnız FileNotFoundException. tutmaq FileNotFoundException. Fayl sistemi hər halda faylın yoxluğunu yoxlamalıdır. Bütün bunları iki dəfə yerinə yetirmək üçün heç bir məna yoxdur və bunu etməməyin bir neçə səbəbi, məsələn:

  • ikiqat kod
  • faylın yoxlanılması zamanı mövcud ola biləcəyi zaman pəncərəsinin problemi, ancaq açılması və ya əksinə, və ya
  • bu sualın göstərdiyi kimi səhv testi edə və yanlış cavab ala bilərsiniz.

Sistemi təxmin etməyə çalışmayın. O bilir. Gələcəyi təxmin etməyə çalışmayın. Ümumiyyətlə, bir qayda mövcud olub olmadığını yoxlamaq üçün ən yaxşı üsul sadəcə istifadə etməkdir.

9
18 июля '13 в 0:58 2013-07-18 00:58 Cavab 18 iyul, saat 13: 00-da 0:58 2013-07-18 00:58 istifadəçi tərəfindən verilir

Mənim üçün Shaun A. O. Harneyin qəbul etdiyi cavabı və Cort3z-nun yekun şərhinin birləşməsi ən yaxşı həll kimi görünür.

Aşağıdakı fraqment istifadə olunur:

 File f = new File(filePathString); if(f.exists()  f.isFile()) { //do something ... } 

Bu birinə kömək edə biləcəyinə ümid edirəm.

8
21 янв. Cavab X-Fate Jan 21 verilir 2015-01-21 14:02 '15 at 14:02 2015-01-21 14:02

Həm də kəşf etməyə dəyər . Commons FileUtils https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/FileUtils.html. Faylları idarə etmək üçün əlavə üsullar var və tez-tez JDK-dan daha yaxşıdır.

4
29 нояб. Cavab peter.murray.rust tərəfindən verilir Nov 29 2009-11-29 23:39 '09 at 11:39 2009-11-29 23:39

Mən bu mövzuda bir az gec qaldığımı bilirəm. Ancaq mənim cavabım, Java 7 və daha yüksək ilə etibarlıdır.

Sonrakı fragment

 if(Files.isRegularFile(Paths.get(pathToFile))) { // do something } 

isRegularFile qənaətbəxşdır, çünki fayl mövcud deyilsə, isRegularFile metodu false qaytarır. Buna görə də, Files.exists(...) olub olmadığını yoxlamağa ehtiyac yoxdur.

Qeyd edək ki, digər parametrlər əlaqələrin necə işlənməsini göstərən parametrlərdir. Sembolik linklər default olaraq istifadə olunur.

Oracle Oracle Documentation

3
19 сент. Cavab 19 sentyabr avi.elkharrat verilir 2017-09-19 12:39 '17 saat 12:39 'də 2017-09-19 12:39

Məsələn bir fayl qovluğunuz varsa və mövcud olub olmadığını yoxlamaq istəyirsinizsə

 File tmpDir = new File("/var/tmp"); boolean exists = tmpDir.exists(); 

faylı mövcud deyilsə səhv qaytarır

Kaynak: https://alvinalexander.com/java/java-file-exists-directory-exists

2
23 нояб. Cavab 23 noyabr ID127898 verildi . 2017-11-23 11:44 '17 saat 11:44 2017-11-23 11:44 'də
 new File("/path/to/file").exists(); 

aldatma

1
26 апр. cavab user4833142 Apr 26 tərəfindən verilir 2015-04-26 02:15 '15 də 2:15 'də 2015-04-26 02:15

Fayl konstruktorunu simli ilə istifadə etməyin.
Bu işləməyəcək!
Bunun yerine URI'yi istifadə edin:

 File f = new File(new URI("file:///"+filePathString.replace('\\', '/'))); if(f.exists()  !f.isDirectory()) { // to do } 
1
01 дек. Cavab verildi iviorel 01 Dekabr 2016-12-01 11:21 '16 'da 11:21' də 2016-12-01 11:21

File dir File yoxlamaq istəyirsinizsə

 String directoryPath = dir.getAbsolutePath() boolean check = new File(new File(directoryPath), aFile.getName()).exists(); 

və nəticəni yoxlayın

1
08 мая '14 в 23:52 2014-05-08 23:52 cavab user3618182 May 08, '14 at 11:52 pm 2014-05-08 23:52 tərəfindən verilir

File.exists() faylın olub olmadığını yoxlamaq üçün, tarama əməliyyatının vəziyyətini göstərən Boolean dəyəri qaytarır; fayl mövcud olduqda; Fəqət yoxsa.

 File f = new File("c:\\test.txt"); if(f.exists()){ System.out.println("File existed"); }else{ System.out.println("File not found!"); } 
1
26 апр. Apr 26'da KIBOU Hassan tərəfindən verilmiş cavab 2017-04-26 13:24 '17 saat 13:24 'da 2017-04-26 13:24

Aşağıdakı kodu istifadə etmək üçün aşağıdakıları istifadə edə bilərsiniz:

 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; } } } 
0
23 дек. Cavab Pankti tərəfindən 23 dekabr. 2016-12-23 22:06 '16 saat 10:06 'da 2016-12-23 22:06

Bunu belə edə bilərsiniz

 import java.nio.file.Paths; String file = "myfile.sss"; if(Paths.get(file).toFile().isFile()){ //...do somethinh } 
0
17 окт. Rodrigo Pavan tərəfindən 17 oktyabrda cavab verildi 2018-10-17 16:18 '18 saat 16:18 'da 2018-10-17 16:18

Bir faylın olub olmadığını yoxlamaq üçün, java.io kitabxanasını idxal edin. *

 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 } 

Mənbə: http://newsdivariotipo.altervista.org/java-come-controllare-se-un-file-esiste/

-2
21 июня '18 в 13:08 2018-06-21 13:08 cavab Yassine 21 İyun, '18 'də saat 13:08' də 2018-06-21 13:08 'də verilir