2012-05-14 11 views
5

Actualmente estoy trabajando en un laboratorio en mi clase cpe y tenemos que crear un programa simple que escanea en cadenas desde un archivo .txt e imprime a un archivo .txt diferente. Hasta ahora tengo el programa básico extendido, pero mi excepción sigue en aumento, aunque tengo todos los archivos necesarios. ¿Alguien me puede ayudar a depurar?E/S de archivo: Lectura de un archivo y escritura en otro (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

El archivo de entrada/salida no tiene una extensión? – apnorton

+1

Él ya dijo que son archivos .txt ... así que parece que ese es el problema. Un consejo para cualquier computadora en la que planee hacer programación: configure su buscador de archivos para mostrar siempre las extensiones de archivo. – Tharwen

+0

No se olvide de cerrar el escáner y el escritor. –

Respuesta

4

Necesita averiguar dónde se ve el archivo "input". Cuando solo especifica "input", busca el archivo en el directorio de trabajo actual . Al trabajar con un IDE, este directorio puede no ser lo que piensas que es.

intente lo siguiente:

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

para ver donde se busca el archivo.

+0

Gracias !! Resulta que mis archivos .txt estaban en la carpeta incorrecta. Así que los está buscando, pero ahora no está escribiendo desde mi input.txt a mi output.txt. Output.txt todavía está vacío. – Mike

+0

* Es * porque no llamas a color. Te sugiero que llames a printer.close() cuando hayas terminado (lo cual te servirá para tirar). – aioobe

+0

¡Gracias! ¡Ahora funciona! Cerré mi escáner pero no mi impresora. – Mike

3

Al acceder a archivos con Java I/O, debe incluir la extensión de tipo de archivo del archivo (si existe).

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

Tenía las extensiones .txt anteriores y todavía lanzaría mi excepción. Estoy usando eclipse y los archivos .txt están en el pliegue src junto con mis archivos .java. – Mike

+0

Agregué las extensiones y moví los archivos a la carpeta correcta, pero ahora cada vez que ejecuto mi programa, mi output.txt se actualiza, pero cuando lo abro todavía no hay nada en él. – Mike

2

Puede ser que son sólo olvida el 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

Él dice que recibe una excepción. – aioobe

+0

@aioobe ¿cuál es su excepción? – isvforall

+0

* Yo * no tengo ninguna excepción, * Mike * (el chico que publicó la pregunta) tiene. – aioobe

0

Podemos hacer esto mediante la lectura del archivo usando FileInputStream objeto y escribir en otro archivo utilizando FileOutputStream objeto.

Aquí es el código de ejemplo

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

} 
Cuestiones relacionadas