Android; ตรวจสอบว่ามีไฟล์อยู่หรือไม่โดยไม่สร้างไฟล์ใหม่


227

ฉันต้องการตรวจสอบว่ามีไฟล์อยู่ในโฟลเดอร์แพ็คเกจหรือไม่ แต่ไม่ต้องการสร้างไฟล์ใหม่

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

รหัสนี้ตรวจสอบโดยไม่สร้างไฟล์ใหม่หรือไม่?



1
@Kunok ฉันกำลังตรวจสอบความคิดเห็นการแก้ไขของคุณ: ลบคำเช่นรถถังตามที่ ... : P
Kevin Guan

1
@KevinGuan Oh yeah ไม่ดีเพียงแค่มีบ้านของฉันจากงานเลี้ยงวันใหม่ดังนั้นผมจึงไม่สามารถที่จะเขียนอย่างถูกต้อง :)
Kunok

คำตอบ:


440

อันของโค้ดของคุณไม่ได้สร้างขึ้นมาใหม่มันแค่ตรวจสอบว่ามันมีอยู่แล้วและไม่มีอะไรอีกแล้ว

File file = new File(filePath);
if(file.exists())      
//Do something
else
// Do something else.

5
ไม่ทราบว่าทำไมในกรณีของฉันรหัสนี้กำลังสร้างไฟล์ใหม่
ofnowhere

วิธีการตรวจสอบในโฟลเดอร์ย่อยด้วย?
Pratik Butani

4
สิ่งนี้เป็นเช่นนั้นเนื่องจากไม่มีวิธีการคงที่: File.exists (ไฟล์ String) ดังนั้นคุณต้องกำหนดวัตถุไฟล์ใหม่เพื่อเข้าถึงวิธีการ 'มีอยู่'
Giova

3
ฉันคิดว่า OP ไม่ต้องการสร้างวัตถุไฟล์ใหม่
AndroDev

1
@AndroDev no - เขาไม่ต้องการสร้างไฟล์ใหม่คำตอบสร้างอ้างอิงใหม่ไปยังไฟล์
Marian Paździoch

31

เมื่อคุณใช้รหัสนี้คุณไม่ได้สร้างไฟล์ใหม่มันเป็นเพียงการสร้างการอ้างอิงวัตถุสำหรับไฟล์นั้นและทดสอบว่ามีอยู่หรือไม่

File file = new File(filePath);
if(file.exists()) 
    //do something

21

มันใช้งานได้สำหรับฉัน:

File file = new File(getApplicationContext().getFilesDir(),"whatever.txt");
    if(file.exists()){
       //Do something
    }
    else{
       //Nothing
     }

2
นี่เป็นวิธีแก้ปัญหาหากคุณมีชื่อไฟล์และไม่ใช่พา ธ
Zach

1
@ Zach ไม่จริงมันเป็นเส้นทางที่จะเป็นพารามิเตอร์แรกที่ฉันส่ง (getApplicationContext (). getFilesDir ())
Jordi Vicens

8

เมื่อคุณพูดว่า "ในโฟลเดอร์แพ็คเกจคุณ" คุณหมายถึงไฟล์แอปในเครื่องของคุณหรือไม่ ถ้าเป็นเช่นนั้นคุณจะได้รับรายการของพวกเขาโดยใช้Context.fileList ()วิธีการ เพียงแค่วนซ้ำและค้นหาไฟล์ของคุณ ที่สมมติว่าคุณบันทึกแฟ้มเดิมที่มีContext.openFileOutput ()

โค้ดตัวอย่าง (ในกิจกรรม):

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

5

The methodsin the Path class เป็นวากยสัมพันธ์ซึ่งหมายความว่าพวกมันทำงานบนอินสแตนซ์ Path แต่ในที่สุดคุณจะต้องเข้าถึงfileระบบเพื่อตรวจสอบว่ามีเส้นทางใดเส้นทางหนึ่งอยู่

 File file = new File("FileName");
 if(file.exists()){
 System.out.println("file is already there");
 }else{
 System.out.println("Not find file ");
 }


0

คุณสมบัติส่วนขยายของ Kotlin

ไฟล์จะไม่ถูกสร้างขึ้นเมื่อคุณสร้างวัตถุไฟล์มันเป็นเพียงส่วนต่อประสาน

เพื่อให้การทำงานกับไฟล์ง่ายขึ้นมี.toFileฟังก์ชั่นที่มีอยู่ใน Uri

คุณยังสามารถเพิ่มคุณสมบัติส่วนขยายในไฟล์และ / หรือ Uri เพื่อให้การใช้งานง่ายขึ้น

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

จากนั้นใช้uri.existsหรือfile.existsตรวจสอบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.