2012-06-27 11 views
12

मैं किसी दिए गए निर्देशिका में किसी विशिष्ट फ़ाइल की जांच करने का प्रयास कर रहा हूं। मुझे कोड नहीं चाहिए लेकिन मैं अपने पास एक को ठीक करना चाहता हूं। इस सवाल में एकमात्र अंतर यह है कि मैं .MOD एक्सटेंशन वाली फ़ाइलों की तलाश करता हूं।जांच रहा है कि फ़ाइल किसी विशिष्ट निर्देशिका में मौजूद है

public static int checkExists(String directory, String file) { 
    File dir = new File(directory); 
    File[] dir_contents = dir.listFiles(); 
    String temp = file + ".MOD"; 
    boolean check = new File(temp).exists(); 
    System.out.println("Check"+check); // -->always says false 

    for(int i = 0; i<dir_contents.length;i++) { 
     if(dir_contents[i].getName() == (file + ".MOD")) 
      return Constants.FILE_EXISTS; 
    } 

    return Constants.FILE_DOES_NOT_EXIST; 
} 

लेकिन कुछ कारणों के लिए, यह काम नहीं करता -:

मैं कोड तैयार है। मुझे समझ में नहीं आता क्यों, क्या कोई यहां कोई बग ढूंढ सकता है?

+0

आप पहले से ही tmp मूल्य मुद्रित और देखें कि क्या फ़ाइल वास्तव में मौजूद था? और यदि हां, तो लिनक्स फाइलों में यह env (windows या linux) केस संवेदनशील है ... –

+0

हाँ मैंने temp मान को प्रिंट करने का प्रयास किया और फ़ाइल वास्तव में निर्देशिका में मौजूद है। यह विंडोज ओएस है, लेकिन 'फ़ाइल' पैरामीटर और निर्देशिका में फ़ाइल का वास्तविक नाम केस-सेंसिटिव रूप से समान है। – gkris

उत्तर

30

क्या आप temp.MOD फ़ाइल को वर्तमान निर्देशिका में (निर्देशिका जिसमें से आप अपना एप्लिकेशन चलाते हैं) में उम्मीद करते हैं, या आप इसे "निर्देशिका" फ़ोल्डर में रखना चाहते हैं? उत्तरार्द्ध मामले में, फ़ाइल इस तरह से बनाने का प्रयास करें:

boolean check = new File(directory, temp).exists(); 

इसके अलावा, फाइल अनुमति के लिए जाँच क्योंकि यह अनुमति त्रुटियों पर भी असफल हो जायेगी। स्पेस ने उल्लेख किया है कि मामले में संवेदनशीलता भी समस्या का कारण हो सकती है।

+0

हां उत्तरार्द्ध मामला है और यह काम करता है! :) धन्यवाद – gkris

+0

खुशी है कि इससे मदद मिली। – n0rm1e

3

यह जहां बग है।

String temp = file + ".MOD"; 

और

if(dir_contents[i].getName() == (file + ".MOD")) 

कोड boolean check = new File(temp).exists(); आवश्यक निर्देशिका में नहीं वर्तमान निर्देशिका में फाइल चैक करेंगे।

String dirName="/home/demo"; 
    File dir = new File(dirName); 
    File[] dir_contents = dir.listFiles(); 
    String temp = dirName+"/"+"README" + ".MOD"; 
    boolean check = new File(temp).exists(); 
    System.out.println("Check" + check); // -->always says false 

    for (int i = 0; i < dir_contents.length; i++) { 
     if (dir_contents[i].getName().equals("README" + ".MOD")) 
      return Constants.FILE_EXISTS; 
      } 

    return Constants.FILE_DOES_NOT_EXIST; 
+0

हां। धन्यवाद। houman001 बस वही इंगित किया। – gkris

+0

@gkris और आपको लूप के लिए लूप –

+0

में .equals() का उपयोग करना है, उसी फ़ाइल अस्तित्व की जांच करने का एक और तरीका है। मेरे पास एक ही फ़ंक्शन की जांच करने के लिए 2 विधियां थीं क्योंकि कोई भी काम नहीं कर रहा था। अब मैं पूरे लूप के लिए सुरक्षित रूप से हटा सकता हूं। एक बार फिर धन्यवाद। – gkris

3

इस प्रयास करें ..............

File f = new File("./file_name"); 
if(f.exists()){ 
    System.out.println("success"); 
} 
else{ 
    System.out.println("fail"); 
} 
+0

यह मदद नहीं करेगा क्योंकि मैं वर्तमान निर्देशिका में फ़ाइल की जांच नहीं कर रहा हूं। वैसे भी मुझे जवाब मिला और इसे भी स्वीकार कर लिया। धन्यवाद – gkris

+0

ठीक है कि पथ में मेरा क्या मतलब है ... ठीक है नई फ़ाइल ("./ file_name"); "।" (डॉट) ऑपरेटर का मतलब वर्तमान निर्देशिका –

+0

हां है। मैं वर्तमान निर्देशिका की जांच नहीं करना चाहता हूं। – gkris

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