2012-11-01 20 views
31

में स्कैनर क्लास का उपयोग कर एक .txt फ़ाइल पढ़ना मैं जावा प्रोग्राम पर काम कर रहा हूं जो एक टेक्स्ट फ़ाइल लाइन-दर-रेखा पढ़ता है, प्रत्येक संख्या के साथ, प्रत्येक संख्या इसे एक सरणी में फेंकता है, फिर कोशिश करता है और सम्मिलन का उपयोग करता है सरणी को सॉर्ट करने के लिए सॉर्ट करें। मुझे प्रोग्राम फ़ाइल को पढ़ने के लिए प्रोग्राम प्राप्त करने में मदद चाहिए।जावा

java.io.FileNotFoundException: 10_Random (The system cannot find the file specified) 
at java.io.FileInputStream.open(Native Method) 
at java.io.FileInputStream.<init>(Unknown Source) 
at java.util.Scanner.<init>(Unknown Source) 
at insertionSort.main(insertionSort.java:14) 

मैं बिन "और मुख्य परियोजना फ़ोल्डर मेरी" src "में" .txt फ़ाइल की एक प्रति है लेकिन यह अभी भी नहीं मिल सकता है:

मैं निम्न त्रुटि संदेश मिल रहा है फ़ाइल। मैं रास्ते से ग्रहण का उपयोग कर रहा हूँ।

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 

public class insertionSort { 

public static void main(String[] args) { 

    File file = new File("10_Random"); 

    try { 

     Scanner sc = new Scanner(file); 

     while (sc.hasNextLine()) { 
      int i = sc.nextInt(); 
      System.out.println(i); 
     } 
     sc.close(); 
    } 
    catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
} 
} 
+2

System.err.println (file.getAbsolutePath()) जोड़ने का प्रयास करें; यह देखने के लिए कि आप कौन सी फाइल को पढ़ने की कोशिश करते हैं। –

+1

आप एक .txt फ़ाइल नहीं खोलते हैं। – eckes

उत्तर

40

आप आपके द्वारा निर्दिष्ट फ़ाइल एक्सटेंशन यहाँ

File file = new File("10_Random.txt"); 
0

फ़ाइल आप में पढ़ा वास्तव में फ़ाइल नाम होना आवश्यक है डाल करने के लिए है: "10_random" नहीं "10_random.txt" नहीं "10_random.blah", यह आप जो मांग रहे हैं उससे बिल्कुल मेल खाना चाहिए। आप किसी एक को मिलान करने के लिए बदल सकते हैं ताकि वे लाइन हो जाएं, लेकिन बस सुनिश्चित करें कि वे करते हैं। यह आपके द्वारा उपयोग किए जा रहे ओएस में फ़ाइल एक्सटेंशन दिखाने में मदद कर सकता है।

इसके अलावा, फ़ाइल स्थान के लिए, यह अंतिम निष्पादन योग्य (.class फ़ाइल) के रूप में कार्यशील निर्देशिका (समान स्तर) में स्थित होना चाहिए जो संकलन का परिणाम है।

1
  1. आपको फ़ाइल एक्सटेंशन सहित सटीक फ़ाइल नाम निर्दिष्ट करने की आवश्यकता है, उदा। 10_Random.txt
  2. फ़ाइल को निष्पादन योग्य के समान निर्देशिका में होना आवश्यक है यदि आप इसे किसी भी प्रकार के स्पष्ट पथ के बिना संदर्भित करना चाहते हैं।
  3. जब हम इसमें हैं, तो आपको int पढ़ने से पहले int की जांच करनी होगी। hasNextLine() के साथ जांचना सुरक्षित नहीं है और फिर nextInt() के साथ अपेक्षा करें। आपको hasNextInt() का उपयोग यह जांचने के लिए करना चाहिए कि वास्तव में int पकड़ने के लिए है। प्रति पंक्ति नियम एक पूर्णांक को लागू करने के लिए आप कितनी सख्ती से चुनते हैं, निश्चित रूप से आप पर निर्भर है।
4
  1. यकीन है कि फ़ाइल नाम सही है (- के रूप में पहले से ही सुझाव उचित पूंजीकरण, मिलान विस्तार आदि) बनाओ।

  2. उपयोग classpath में अपनी फ़ाइल का पता लगा Class.getResource विधि - वर्तमान निर्देशिका पर भरोसा नहीं करते:

    File file = new File(args[0]); 
    
  3. :

    URL url = insertionSort.class.getResource("10_Random"); 
    
    File file = new File(url.toURI()); 
    
  4. कमांड लाइन तर्क के माध्यम से पूर्ण फ़ाइल पथ निर्दिष्ट करें

ग्रहण में:

  1. चुनें "तर्क" टैब
  2. रखो अपने "ग" रन विन्यास "
  3. जाओ: /my/file/is/here/10_Random.txt.or।जो कुछ भी कार्यक्रम तर्क "खंड कोड निम्न फ़ाइल

    import java.io.File; 
    import java.util.Scanner; 
    
    public class ReadFile { 
    
        public static void main(String[] args) { 
    
         try { 
          System.out.print("Enter the file name with extension : "); 
    
          Scanner input = new Scanner(System.in); 
    
          File file = new File(input.nextLine()); 
    
          input = new Scanner(file); 
    
    
          while (input.hasNextLine()) { 
           String line = input.nextLine(); 
           System.out.println(line); 
          } 
          input.close(); 
    
         } catch (Exception ex) { 
          ex.printStackTrace(); 
         } 
        } 
    
    } 
    

    पढ़ने के लिए

+0

+1 इस कार्य को पूरा करने के लिए सामान्य रूप से पथ से निपटने के लिए और बेहतर तरीके से एक बेहतर तरीका (तर्क) का सुझाव देने के लिए +1। फ़ाइल को खोलने में विफलता को संभालने के लिए आप 'कोशिश पकड़ने' का भी उल्लेख कर सकते हैं। –

15

उपयोग" में "-> इस एप्लिकेशन के पास लाइन द्वारा फ़ाइल सामग्री लाइन प्रिंट कर रहा है

2

कोई भी हो रहा है इस तथ्य को संबोधित किया कि आप किसी भी सरणी में कुछ भी नहीं डाल रहे हैं। आप प्रत्येक int को "i" पर पढ़ रहे हैं और फिर इसे आउटपुट कर रहे हैं।

for (int i =0 ; sc.HasNextLine();i++) 
{ 
    array[i] = sc.NextInt(); 
} 

इस प्रभाव से कुछ अगले सरणी को पढ़ने के लिए सरणी के मानों को सेट रखेगा।

लूप के लिए एक और से अधिक सरणी में संख्या प्रदर्शित कर सकते हैं।

for (int x=0;x< array.length ; x++) 
{ 
    System.out.println("array[x]"); 
} 
1

फ़ाइल पथ यहाँ एक मुद्दा हो तो कृपया सुनिश्चित करें कि फ़ाइल सही निर्देशिका में मौजूद है या निरपेक्ष पथ सुनिश्चित करें कि आप एक सही फ़ाइल ओर इशारा करते हैं बनाने के लिए देने के लिए लगता है। कृपया फ़ाइल को सही करने के लिए file.getAbsolutePath() लॉग करें।

2

यहां कुछ काम कर रहे और परीक्षण किए गए तरीके हैं;

using Scanner

package io; 

import java.io.File; 
import java.util.Scanner; 

public class ReadFromFileUsingScanner { 
    public static void main(String[] args) throws Exception { 
     File file=new File("C:\\Users\\pankaj\\Desktop\\test.java"); 
     Scanner sc=new Scanner(file); 
     while(sc.hasNextLine()){ 
      System.out.println(sc.nextLine()); 
     } 
    } 
} 


यहाँ (पाश) के बिना पूरी फ़ाइल को पढ़ने के लिए एक और तरीका है Scanner वर्ग

package io; 

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 

public class ReadingEntireFileWithoutLoop { 
    public static void main(String[] args) throws FileNotFoundException { 
     File file=new File("C:\\Users\\pankaj\\Desktop\\test.java"); 
     Scanner sc=new Scanner(file); 
     sc.useDelimiter("\\Z"); 
     System.out.println(sc.next()); 
    } 
} 

का उपयोग कर BufferedReader

का उपयोग कर
package io; 
import java.io.*; 
public class ReadFromFile2 { 
    public static void main(String[] args)throws Exception { 
     File file=new File("C:\\Users\\pankaj\\Desktop\\test.java"); 
     BufferedReader br=new BufferedReader(new FileReader(file)); 
     String st; 
     while((st=br.readLine())!=null){ 
      System.out.println(st); 
     } 
    } 
} 

using FileReader

package io; 
import java.io.*; 
public class ReadingFromFile { 
    public static void main(String[] args) throws Exception { 
     FileReader fr=new FileReader("C:\\Users\\pankaj\\Desktop\\test.java"); 
     int i; 
     while((i=fr.read())!=-1){ 
      System.out.print((char) i); 
     } 
    } 
} 
0

सबसे पहले फ़ाइल पते की जाँच करें, यह आपके .java फ़ाइल के बगल में या किसी का पता है कि आप classpath वातावरण चर में परिभाषित में होना चाहिए। जब आप इसे चेक करते हैं तो नीचे आज़माएं।

  1. यह फ़ाइल वस्तु निर्माता में विस्तार है, एक उदाहरण के रूप से आप एक फ़ाइल नाम का उपयोग करना चाहिए:

    File myFile = new File("test.txt");

  2. लेकिन वहाँ स्कैनर ऑब्जेक्ट के अंदर इसका इस्तेमाल करने से गुजरती एक बेहतर तरीका है फ़ाइल नाम पूर्ण पता, एक उदाहरण के रूप:

    Scanner sc = new Scanner(Paths.get("test.txt"));

इस तरह से आपको java.nio.file.Paths आयात करना होगा।

1

निजी शून्य loadData() {

Scanner scanner = null; 
    try { 
     scanner = new Scanner(new File(getFileName())); 
     while (scanner.hasNextLine()) { 
      Scanner lijnScanner = new Scanner(scanner.nextLine()); 

      lijnScanner.useDelimiter(";"); 
      String stadVan = lijnScanner.next(); 
      String stadNaar = lijnScanner.next(); 
      double km = Double.parseDouble(lijnScanner.next()); 

      this.voegToe(new TweeSteden(stadVan, stadNaar), km); 

     } 
    } catch (FileNotFoundException e) { 
     throw new DbException(e.getMessage(), e); 
    } finally { 
     if(scanner != null){ 
      scanner.close(); 
     } 
    } 
} 
0

आप का उपयोग करना चाहिए या तो

File file = new File("bin/10_Random.txt"); 

या

File file = new File("src/10_Random.txt"); 

ग्रहण में प्रोजेक्ट फ़ोल्डर के सापेक्ष।