Android; Periksa apakah file ada tanpa membuat yang baru

227

Saya ingin memeriksa apakah file ada di folder paket saya, tetapi saya tidak ingin membuat yang baru.

File file = new File(filePath);
if(file.exists()) 
     return true;

Apakah kode ini memeriksa tanpa membuat file baru?

MBH
sumber
kemungkinan duplikat Tes jika file ada
piokuc
1
@Kunok saya sedang memeriksa komentar edit Anda: kata-kata yang dihapus seperti tank seperti ... : P
Kevin Guan
1
@KevinGuan Oh ya sial, baru pulang dari pesta malam baru jadi saya tidak bisa menulis dengan benar :)
Kunok

Jawaban:

440

Potongan kode Anda tidak membuat yang baru, hanya memeriksa apakah sudah ada dan tidak ada yang lain.

File file = new File(filePath);
if(file.exists())      
//Do something
else
// Do something else.
Maikel Bollemeijer
sumber
5
Tidak tahu mengapa dalam kasus saya kode ini membuat file baru.
ofnowhere
Bagaimana cara check in sub folder juga?
Pratik Butani
4
Ini seperti itu karena tidak ada metode statis: File.exists (String file), jadi Anda harus instanciate objek File baru untuk mengakses metode 'Ada'.
Giova
3
Saya pikir OP tidak ingin membuat objek file baru.
AndroDev
1
@AndroDev no - dia tidak ingin membuat FILE baru, jawabannya membuat REFERENSI baru ke file.
Marian Paździoch
31

Ketika Anda menggunakan kode ini, Anda tidak membuat File baru, itu hanya membuat referensi objek untuk file itu dan menguji apakah ada atau tidak.

File file = new File(filePath);
if(file.exists()) 
    //do something
Victor Laerte
sumber
21

Ini bekerja untuk saya:

File file = new File(getApplicationContext().getFilesDir(),"whatever.txt");
    if(file.exists()){
       //Do something
    }
    else{
       //Nothing
     }
Jordi Vicens
sumber
2
Ini adalah solusinya jika Anda hanya memiliki nama file dan bukan pathnya
Zach
1
@ Zach Tidak juga, itu jalan akan menjadi parameter pertama yang saya kirim (getApplicationContext (). GetFilesDir ())
Jordi Vicens
8

Ketika Anda mengatakan "di folder paket Anda," maksud Anda file aplikasi lokal Anda? Jika demikian, Anda bisa mendapatkan daftar mereka menggunakan metode Context.fileList () . Lakukan iterate dan cari file Anda. Itu dengan asumsi Anda menyimpan file asli dengan Context.openFileOutput () .

Kode sampel (dalam suatu Kegiatan):

public void onCreate(...) {
    super.onCreate(...);
    String[] files = fileList();
    for (String file : files) {
        if (file.equals(myFileName)) {
            //file exits
        }
    }
}
thomas88wp
sumber
5

The methodsdi kelas jalan yang sintaksis, yang berarti bahwa mereka beroperasi pada contoh Path. Tetapi pada akhirnya Anda harus mengakses filesistem untuk memverifikasi bahwa Path tertentu ada

 File file = new File("FileName");
 if(file.exists()){
 System.out.println("file is already there");
 }else{
 System.out.println("Not find file ");
 }
Anand Dwivedi
sumber
1
public boolean FileExists(String fname) {
        File file = getBaseContext().getFileStreamPath(fname);
        return file.exists();
}
HomieZ2
sumber
0

Properti Ekstensi Kotlin

Tidak ada file yang akan dibuat saat Anda membuat objek File, itu hanya antarmuka.

Untuk mempermudah pengerjaan file, ada .toFilefungsi yang ada di Uri

Anda juga dapat menambahkan properti ekstensi pada File dan / atau Uri, untuk menyederhanakan penggunaan lebih lanjut.

val File?.exists get() = this?.exists() ?: false
val Uri?.exists get() = File(this.toString).exists()

Kemudian gunakan uri.existsatau file.existsuntuk memeriksa.

Gibolt
sumber