2012-04-23 13 views
7

संभव डुप्लिकेट खाली है:
Most efficient way to check if a file is empty in Java on Windowsदेखने के लिए कि फ़ाइल

कैसे एक चेक अगर एक फ़ाइल जावा 7 में रिक्त है के लिए?
मैंने ऑब्जेक्टइनपुटस्ट्रीम से उपलब्ध() विधि का उपयोग करके इसे आजमाया, लेकिन फ़ाइल में डेटा होने पर भी यह हमेशा शून्य हो जाता है।

उत्तर

14
File file = new File("file_path"); 
System.out.println(file.length()); 
+2

जावा 7 के बाद से एक मुश्किल समाधान java.nio.Files वर्ग का उपयोग करना है। फिर, आप एक ही पंक्ति में ऐसा कर सकते हैं। उदाहरण के लिए: 'System.out.println (Files.size (पथ।प्राप्त करें ("file_path")); ~ –

+0

यूनिकोड फ़ाइलों के लिए नहीं है (विवरण के लिए डुप्लिकेट संदेश में उत्तर देखें)। –

1
BufferedReader br = new BufferedReader(new FileReader("your_location"));  
if (br.readLine()) == null) { 
    System.out.println("No errors, and file empty"); 
} 

Most efficient way to check if a file is empty in Java on Windows

+0

@ sans481 लिंक्ड पोस्ट बहुत से व्यक्ति को ज्ञात हर विधि को दर्शाता है। आमतौर पर उन तरीकों में से अधिकांश काम करते हैं और सही होते हैं, केवल ओपी में एक बहुत ही विशिष्ट समस्या होती है: एक फ़ाइल जो वास्तव में ** खाली नहीं थी ** (इसमें दो बाइट बीओएम था) को खाली माना जाना था। –

+0

अब मैं आपकी राय को स्पष्ट रूप से समझ गया हूं। हां, यह वास्तव में एक पूरी लाइन को पढ़ने के लिए एक आपदा है कि यह बताने के लिए कि फ़ाइल खाली है या नहीं। यदि पहली पंक्ति बड़ी है तो स्थिति खराब हो जाती है। धन्यवाद! – sgowd

0

देख J2RE javadocs के अनुसार: http://docs.oracle.com/javase/7/docs/api/java/io/File.html#length()

public long length() 
    Returns the length of the file denoted by this abstract pathname. The return value is  unspecified if this pathname denotes a directory. 

तो new File("path to your file").length() > 0 चाल करना चाहिए। बीडी पिछले जवाब के लिए खेद है। :(

12
File file = new File(path); 

boolean empty = !file.exists() || file.length() == 0; 

जो के लिए छोटा कर सकते हैं: प्रलेखन के लिए विधि अनुसार के बाद से

boolean empty = file.length() == 0; 

रिटर्न

लंबाई, बाइट में, इस सार पथ नाम से दर्शाया जाता है फ़ाइल का, या 0 एल अगर फ़ाइल मौजूद नहीं है

+0

हे @ जैक, मुझे लगता है कि यह नीचे मेरे जवाब के रूप में होना चाहिए। अगर मैं ग़लत हूं तो मेरी गलती सुझाएं। – TechSpellBound

+1

यह इस बात पर निर्भर करता है कि आपको यह जांचने की आवश्यकता क्यों है कि यह फ़ाइल खाली है या नहीं। आपको या तो एक मौजूदा फाइल को रिक्त या नहीं मानने की आवश्यकता हो सकती है। तो आपका जवाब मेरे जितना सही हो सकता है, न कि बल्कि। – Jack

+0

लेकिन मुझे लगता है कि उस मामले में भी, यदि फ़ाइल मौजूद नहीं है, तो हमें यह जांचना नहीं है कि यह खाली है या नहीं। इसलिए, एक गैर-मौजूदा फ़ाइल के लिए, मेरा उत्तर फ़ाइल को कॉल करता है। लम्बाई()। दक्षता में मामूली सुधार लेकिन मुझे लगता है कि यह तार्किक है। अगर मैं गलत हूं कृपया मुझे सही। – TechSpellBound

0
 File file = new File("path.txt"); 
     if (file.exists()) { 
      FileReader fr = new FileReader(file); 
      if (fr.read() == -1) { 
       System.out.println("EMPTY"); 
      } else { 
       System.out.println("NOT EMPTY"); 
      } 
     } else { 
      System.out.println("DOES NOT EXISTS"); 
     } 
1
File file = new File(path); 

boolean empty = file.exists() && file.length() == 0; 

मैं जोर देना है कि हम जाँच करना चाहते हैं, तो फ़ाइल रिक्त है, तो हम पर विचार करना है कि यह मौजूद है चाहता हूँ।

संबंधित मुद्दे