2012-05-14 14 views
5

पर पढ़ना मैं वर्तमान में अपने सीपी वर्ग में एक प्रयोगशाला पर काम कर रहा हूं और हमें एक सरल प्रोग्राम बनाना है जो एक .txt फ़ाइल और प्रिंट से तारों में स्कैन करता है उन्हें एक अलग .txt फ़ाइल में। अब तक मेरे पास मूलभूत कार्यक्रम तैयार किया गया है लेकिन मेरा अपवाद फेंक रहा है हालांकि मेरे पास सभी आवश्यक फाइलें हैं। क्या कोई मुझे डीबग करने में मदद कर सकता है?फ़ाइल I/O: एक फ़ाइल से पढ़ना और अन्य (जावा)

import java.io.*; 
import java.util.*; 

public class FileIO { 

public static void main(String args[]) {   
    try { 
     File input = new File("input"); 
     File output = new File("output"); 
     Scanner sc = new Scanner(input); 
     PrintWriter printer = new PrintWriter(output); 
     while(sc.hasNextLine()) { 
      String s = sc.nextLine(); 
      printer.write(s); 
     } 
    } 
    catch(FileNotFoundException e) { 
     System.err.println("File not found. Please scan in new file."); 
    } 
} 
} 
+1

आपका इन/आउटपुट फ़ाइल एक विस्तार नहीं है? – apnorton

+1

उन्होंने पहले से ही कहा है कि वे .txt फ़ाइलें हैं ... तो ऐसा लगता है कि यह समस्या है। प्रोग्रामिंग करने की योजना बनाने वाले किसी भी कंप्यूटर के लिए थोड़ी सी सलाह: फ़ाइल एक्सटेंशन को हमेशा दिखाने के लिए अपने फ़ाइल ब्राउज़र को सेट करें। – Tharwen

+0

स्कैनर और लेखक को बंद करना न भूलें। –

उत्तर

4

आपको यह पता लगाने की आवश्यकता है कि यह "input" फ़ाइल कहां से दिखता है। जब आप केवल "input" निर्दिष्ट करते हैं तो यह वर्तमान कार्य निर्देशिका में फ़ाइल को देखता है। आईडीई के साथ काम करते समय, यह निर्देशिका ऐसा नहीं हो सकती है जो आपको लगता है।

निम्नलिखित का प्रयास करें:

System.out.println(new File("input").getAbsolutePath()); 

देखने के लिए जहां यह फ़ाइल के लिए लग रहा है।

+0

धन्यवाद !! यह मेरी .txt फ़ाइलों को गलत फ़ोल्डर में बदल गया। तो यह उन्हें ढूंढ रहा है लेकिन अब यह मेरे input.txt से मेरे output.txt पर लिख नहीं रहा है। आउटपुट.txt अभी भी खाली है। – Mike

+0

* यह * है क्योंकि आप फ्लश नहीं कहते हैं। मेरा सुझाव है कि आप प्रिंटर.क्लोज़() को कॉल करते समय कॉल करें (जो आपके लिए इसे फ्लश करेगा)। – aioobe

+0

धन्यवाद !! यह अब काम करता है! मैंने अपना स्कैनर बंद कर दिया लेकिन मेरा प्रिंटर नहीं। – Mike

3

जावा I/O के साथ फ़ाइलों तक पहुंचने पर, आपको फ़ाइल के फ़ाइल प्रकार एक्सटेंशन (यदि कोई मौजूद है) शामिल करना होगा।

File input = new File("input.txt"); 
    File output = new File("output.txt"); 
+0

मेरे पास पहले .txt एक्सटेंशन थे और मैं अभी भी अपना अपवाद फेंक दूंगा। मैं ग्रहण का उपयोग कर रहा हूं और .txt फ़ाइलें मेरे .java फ़ाइलों के साथ src fold में हैं। – Mike

+0

मैंने एक्सटेंशन को वापस जोड़ा और फ़ाइलों को सही फ़ोल्डर में ले जाया लेकिन अब जब भी मैं अपना प्रोग्राम चलाता हूं, तो मेरा output.txt अपडेट हो जाता है लेकिन जब मैं इसे खोलता हूं तब भी इसमें कुछ भी नहीं है। – Mike

2

हो सकता है आप कर रहे हैं बस FileInputStream वस्तु का उपयोग कर फ़ाइल को पढ़ कर flush()

 try { 
      File input = new File("input"); 
      File output = new File("output"); 
      Scanner sc = new Scanner(input); 
      PrintWriter printer = new PrintWriter(output); 
      while (sc.hasNextLine()) { 
       String s = sc.nextLine(); 
       printer.write(s); 
      } 
      **printer.flush();** 
     } 
     catch (FileNotFoundException e) { 
      System.err.println("File not found. Please scan in new file."); 
     } 
+0

वह कहता है कि उसे अपवाद मिलता है। – aioobe

+0

@aioobe आपका अपवाद क्या है? – isvforall

+0

* I * में कोई अपवाद नहीं है, * माइक * (जिस व्यक्ति ने प्रश्न पोस्ट किया है) है। – aioobe

0

हम ऐसा कर सकते हैं भूल जाते हैं और FileOutputStream वस्तु का उपयोग कर एक और फाइल में लिखें।

यहाँ नमूना कोड

package java_io_examples; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.util.Vector; 

public class Filetest { 

    public static void main(String[] args) { 

    try { 

      FileInputStream fin = new FileInputStream("D:\\testout.txt"); 

      int i = 0; 
      String s = ""; 

      while((i=fin.read())!=-1) { 

       s = s + String.valueOf((char)i); 

      } 

      FileOutputStream fout = new 
      FileOutputStream("D:\\newtestout1.txt"); 
      byte[] b = s.getBytes(); 

      fout.write(b); 
      fout.close(); 

      System.out.println("Done reading and writing!!"); 

     } catch(Exception e){ 
     System.out.println(e); 
     } 

    } 

} 
0
public void readwrite() throws IOException 
{ 
    // Reading data from file 
    File f1=new File("D:/read.txt"); 
    FileReader fr=new FileReader(f1); 
    BufferedReader br=new BufferedReader(fr); 

    String s = br.readLine(); 

    // Writing data 
    File f2=new File("D:/write.txt"); 
    FileWriter fw=new FileWriter(f2); 
    BufferedWriter bw=new BufferedWriter(fw); 
    while(s!=null) 
    { 
     bw.write(s); 
     bw.newLine(); 
     System.out.println(s); 
     s=br.readLine(); 

    } 
    bw.flush(); 
    bw.close(); 

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