2009-04-08 19 views
19

¿Cómo leer y mostrar datos de los archivos .txt?lectura y la visualización de datos de un archivo .txt

+1

algo más de información en la pregunta probablemente ayudará a obtener mejores respuestas. La información sobre lo que sabe, lo que cree que sabe, etc. puede ayudar a identificar si hay preguntas específicas. –

Respuesta

41
BufferedReader in = new BufferedReader(new FileReader("<Filename>")); 

A continuación, puede utilizar in.readLine(); para leer una sola línea a la vez. Para leer hasta el final, escriba un ciclo while como tal:

String line; 
while((line = in.readLine()) != null) 
{ 
    System.out.println(line); 
} 
in.close(); 
+3

Recuerde agregar in.close(); al final de tu código – Brian

+0

¿cómo se puede verificar la duración del archivo? –

9

En general:

  • Crear una FileInputStream para el archivo.
  • Crear InputStreamReader envolver el flujo de entrada, especificando la correcta encoding
  • Opcionalmente crear una BufferedReader alrededor del InputStreamReader, lo que hace que sea más fácil de leer una línea a la vez.
  • Lectura hasta que no haya más datos (por ejemplo, readLine devuelve nulo)
  • Visualice los datos sobre la marcha o búfer para más tarde.

Si necesita más ayuda que eso, por favor sea más específico en su pregunta.

19

Si el archivo es estrictamente texto, yo prefiero usar la clase java.util.Scanner.

Se puede crear un Scanner de un archivo por:

Scanner fileIn = new Scanner(new File(thePathToYourFile)); 

Entonces, se puede leer el texto del archivo usando los métodos:

fileIn.nextLine(); // Reads one line from the file 
fileIn.next(); // Reads one word from the file 

Y, se puede comprobar si hay deja más texto con:

fileIn.hasNext(); // Returns true if there is another word in the file 
fileIn.hasNextLine(); // Returns true if there is another line to read from the file 

Una vez que hayas leído el texto, y lo hayas guardado en String, puede imprimir la cadena a la línea de comandos con:

System.out.print(aString); 
System.out.println(aString); 

El enlace publicado contiene la especificación completa de la clase escáner. Será útil ayudarlo con cualquier otra cosa que desee hacer.

+0

Siempre me olvido de Scanner, nunca lo he usado realmente ... Es una pena que tenga un * nombre de juego * aunque :((Y lo recomendaría siempre especificando explícitamente el juego de caracteres) –

+0

Bueno, estoy asumiendo el escenario más simple posible. los conjuntos de caracteres pueden ser confusos. Normalmente no tiene que preocuparse por ello. – jjnguy

+0

Pero los escáneres son ideales para la lectura rápida y sucia de archivos de texto. – jjnguy

-1

Es muy probable que desee utilizar la clase FileInputStream:

int character; 
StringBuffer buffer = new StringBuffer(""); 
FileInputStream inputStream = new FileInputStream(new File("/home/jessy/file.txt")); 

while((character = inputStream.read()) != -1) 
     buffer.append((char) character); 

inputStream.close(); 
System.out.println(buffer); 

Usted también querrá coger algunas de las excepciones lanzadas por el método read() y el constructor de FileInputStream, pero esos son detalles de implementación específico para tu proyecto.

+1

inputStream.read() no devuelve un * carácter * - i t devuelve * byte * (como int, ciertamente, pero son cosas muy diferentes). Para leer el texto, debes usar un lector. –

0

Si usted quiere tomar algunos atajos puede utilizar Apache Commons IO:

import org.apache.commons.io.FileUtils; 

String data = FileUtils.readFileToString(new File("..."), "UTF-8"); 
System.out.println(data); 

:-)

7

Me encanta esta pieza de código, utilizarlo para cargar un archivo en una cadena:

File file = new File("/my/location"); 
String contents = new Scanner(file).useDelimiter("\\Z").next(); 
0

Para leer líneas desde.archivo txt con encoding UTF-8:

File krokiPath = new File("Records\Record"); 
BufferedReader in = new BufferedReader(
     new InputStreamReader(new FileInputStream(krokiPath), "UTF8")); 

while((r = in.readLine()) != null) { 
    System.out.println(r); 
} 
in.close(); 
+0

Sí, lo probé. Uso caracteres como "ąśćłżóź" y funciona perfectamente bien. Sin eso, no podría usar este chars. –

+0

Interessting. Gracias. – Tom

+0

Una cosa más. Funciona solo para aplicaciones/objetos compatibles con UTF-8 :) –

0
public class PassdataintoFile { 

    public static void main(String[] args) throws IOException { 
     try { 
      PrintWriter pw = new PrintWriter("C:/new/hello.txt", "UTF-8"); 
      PrintWriter pw1 = new PrintWriter("C:/new/hello.txt"); 
      pw1.println("Hi chinni"); 
      pw1.print("your succesfully entered text into file"); 
      pw1.close(); 
     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (UnsupportedEncodingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     BufferedReader br = new BufferedReader(new FileReader("C:/new/hello.txt")); 
      String line; 
      while((line = br.readLine())!= null) 
      { 
       System.out.println(line); 
      } 
      br.close(); 
    } 

} 
+1

Hola y bienvenidos a StackOverflow. Tómese un momento para leer la página de ayuda, especialmente las secciones tituladas ["¿Qué temas puedo preguntar aquí?"] (Http://stackoverflow.com/help/on-topic) y ["¿Qué tipo de preguntas debo hacer? evitar preguntar? "] (http://stackoverflow.com/help/dont-ask). Y, lo que es más importante, lea [la lista de comprobación de preguntas sobre el desbordamiento de pila] (http://meta.stackexchange.com/q/156810/204922). También es posible que desee obtener más información sobre [Ejemplos mínimos, completos y verificables] (http://stackoverflow.com/help/mcve). –

0

En Java 8, se puede leer un archivo completo, simplemente con:

public String read(String file) throws IOException { 
    return new String(Files.readAllBytes(Paths.get(file))); 
} 

o si es un recurso:

public String read(String file) throws IOException { 
    URL url = Resources.getResource(file); 
    return Resources.toString(url, Charsets.UTF_8); 
} 
0

Abajo es el código que puede intentar leer un archivo y mostrar en java utilizando la clase de escáner. El código leerá el nombre del archivo del usuario e imprimirá los datos (archivos VIM del Bloc de notas).

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

public class TestRead 
{ 
public static void main(String[] input) 
{ 
    String fname; 
    Scanner scan = new Scanner(System.in); 

    /* enter filename with extension to open and read its content */ 

    System.out.print("Enter File Name to Open (with extension like file.txt) : "); 
    fname = scan.nextLine(); 

    /* this will reference only one line at a time */ 

    String line = null; 
    try 
    { 
     /* FileReader reads text files in the default encoding */ 
     FileReader fileReader = new FileReader(fname); 

     /* always wrap the FileReader in BufferedReader */ 
     BufferedReader bufferedReader = new BufferedReader(fileReader); 

     while((line = bufferedReader.readLine()) != null) 
     { 
      System.out.println(line); 
     } 

     /* always close the file after use */ 
     bufferedReader.close(); 
    } 
    catch(IOException ex) 
    { 
     System.out.println("Error reading file named '" + fname + "'"); 
    } 
} 

}

Cuestiones relacionadas