Me gustaría leer de todo un archivo de texto y almacenar todo su contenido en una sola cadena. A continuación, me gustaría imprimir la cadena a la ventana de la consola. He intentado esto:

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

public class WritingTextFiles{

    public static void main (String [] args) throws IOException{
        FileWriter fw= new FileWriter("testing.txt");  
        Scanner in= new Scanner (System.in);
        String testwords=in.nextLine();  
        fw.write(testwords);  
        BufferedReader r = new BufferedReader( new FileReader( "testing.txt" ) );  
        System.out.print(r);  
        fw.close();  
    }
}

La única cosa que se imprime en la ventana de la consola es [email protected]

Puede alguien explicar esto a un novato como yo? Tengo muy poca experiencia, pero estoy dispuesto a aprender. Estoy abierto a cualquier y todas las sugerencias. Gracias de antemano!

InformationsquelleAutor user1299661 | 2012-04-24

2 Comentarios

  1. 6

    La razón por la que [email protected] se imprime en la consola es porque le dará la referencia de la búfer lector como un argumento para imprimir, y no de la cadena que desea imprimir.

    BufferedReader r = new BufferedReader( new FileReader( "testing.txt" ) );
    System.out.print(r);

    debe ser:

    BufferedReader r = new BufferedReader( new FileReader( "testing.txt" ) );
    String s = "", line = null;
    while ((line = r.readLine()) != null) {
        s += line;
    }
    System.out.print(s);

    Aviso que en realidad leer las líneas del archivo y almacenarlo en una variable temporal, a continuación, incluimos esta variable a s. A continuación, tenemos la impresión de s, y no las clases bufferedreader.

    En una nota final, es sabio para cerrar un archivo cuando haya terminado, usted llame fw.close(), pero debe haber llamado directamente después de escribir el testwords. Esto es para asegurarse de que el FileWriter en realidad ha escrito la cadena.

    • El programa no compilará. Estoy recieveing incompatible tipos de error que requiere de un operador booleano en línea: while((linea=r.readLine()!=null) {¿me Pueden ayudar?
    • Fuera de curso, lo siento compañero, escribí este código sin probarlo. He editado mi respuesta original para compilar correctamente 🙂
    • Tengo y gracias! Hay una manera de leer un archivo y almacén en un tipo distinto de una cadena que también se puede leer en una matriz? Tengo un programa que toma el contenido de un archivo y lo organiza en una matriz, entonces toma la entrada del usuario y los compara con los componentes del archivo, pero con una cadena, se necesita una enorme cantidad de tiempo para tratar con archivos de texto grandes. Algún consejo?
    • Oh, suena como un buen proyecto, usted puede leer fragmentos del archivo, digamos 250 líneas y almacenarlos en una matriz o en su propio pedazo de objeto, tal vez. A continuación, basta con comparar los trozos de leer, usted no tiene que cargar todo el archivo de texto a la vez de esta manera, y esto se escala muy bien.
    • ¿Cómo leer una determinada cantidad de líneas del archivo?
    • Bueno eso es un poco más complicado, y siento que usted debe pedir que en una pregunta diferente. Implica la limitación de su bucle y almacenar un valor de desplazamiento en algún lugar, luego de analizar los fragmentos.

Dejar respuesta

Please enter your comment!
Please enter your name here