2012-05-14 17 views
5

Attualmente sto lavorando su un laboratorio nella mia classe cpe e dobbiamo creare un semplice programma che analizzi le stringhe da un file .txt e stampi loro in un diverso file .txt. Fino ad ora ho elaborato il programma di base, ma la mia eccezione continua a essere lanciata anche se ho tutti i file necessari. Qualcuno può aiutarmi a eseguire il debug?I/O file: lettura da un file e scrittura in un altro (Java)

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

Il file in/output non ha un'estensione? – apnorton

+1

Ha già detto che sono file .txt ... quindi sembra che questo sia il problema. Un po 'di consigli per qualsiasi computer su cui pensi di programmare: imposta il tuo browser di file per mostrare sempre le estensioni dei file. – Tharwen

+0

Non dimenticare di chiudere scanner e scrittore. –

risposta

4

È necessario capire dove si trova il file "input". Quando si specifica semplicemente "input", si cerca il file nella directory di lavoro corrente . Quando si lavora con un IDE, questa directory potrebbe non essere ciò che si pensa sia.

provare quanto segue:

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

per vedere dove si cerca il file.

+0

Grazie !! Risulta che i miei file .txt erano nella cartella sbagliata. Quindi li sta trovando ma ora non sta scrivendo dal mio input.txt al mio output.txt. Output.txt è ancora vuoto. – Mike

+0

* Questo * perché non si chiama flush. Ti suggerisco di chiamare printer.close() quando hai finito (che lo svuoterà per te). – aioobe

+0

Grazie !! Ora funziona! Ho chiuso il mio scanner ma non la mia stampante. – Mike

3

Quando si accede a file con I/O Java, è necessario includere l'estensione del tipo di file del file (se presente).

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

Ho avuto le estensioni .txt prima e vorrei comunque lanciare la mia eccezione. Sto usando eclipse e i file .txt sono in src fold insieme ai miei file .java. – Mike

+0

Ho aggiunto di nuovo le estensioni e ho spostato i file nella cartella corretta ma ora ogni volta che eseguo il mio programma, il mio output.txt viene aggiornato, ma quando lo apro non c'è ancora nulla in esso. – Mike

2

Può essere che si sono appena dimentica la 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

Dice che ottiene un'eccezione. – aioobe

+0

@aioobe qual è la tua eccezione? – isvforall

+0

* I * non ha alcuna eccezione, * Mike * (il tizio che ha postato la domanda) ha. – aioobe

0

possiamo farlo leggendo il file utilizzando FileInputStream oggetto e scrivere in un altro file utilizzando FileOutputStream oggetto.

Ecco il codice di esempio

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(); 

} 
Problemi correlati