txt texto por mostrar modificar manejo linea leer guardar escribir datos contenido como archivos archivo abrir java file-io java.util.scanner

texto - Lectura de un archivo.txt utilizando la clase de escáner en Java



modificar archivos txt en java (11)

  1. Necesita especificar el nombre de archivo exacto, incluida la extensión de archivo, por ejemplo, 10_Random.txt .
  2. El archivo debe estar en el mismo directorio que el ejecutable si desea consultarlo sin ningún tipo de ruta explícita.
  3. Mientras estamos en ello, debes verificar si hay una int antes de leer un int . No es seguro verificar con hasNextLine() y luego esperar un int con nextInt() . Debería usar hasNextInt() para verificar que realmente hay un int para agarrar. Cuán estrictamente elijas hacer cumplir la regla de un entero por línea depende de ti, por supuesto.

Estoy trabajando en un programa Java que lee un archivo de texto línea por línea, cada uno con un número, toma cada número y lo convierte en una matriz, luego prueba y utiliza la ordenación por inserción para ordenar la matriz. Necesito ayuda para que el programa lea el archivo de texto.

Recibo los siguientes mensajes de error:

java.io.FileNotFoundException: 10_Random (The system cannot find the file specified) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<init>(Unknown Source) at java.util.Scanner.<init>(Unknown Source) at insertionSort.main(insertionSort.java:14)

Tengo una copia del archivo .txt en mi "src" "bin" y la carpeta principal del proyecto, pero todavía no puedo encontrar el archivo. Estoy usando Eclipse por cierto.

import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class insertionSort { public static void main(String[] args) { File file = new File("10_Random"); try { Scanner sc = new Scanner(file); while (sc.hasNextLine()) { int i = sc.nextInt(); System.out.println(i); } sc.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } } }


  1. Asegúrese de que el nombre del archivo sea correcto (mayúsculas adecuadas, extensión correspondiente, etc., como ya se ha sugerido).

  2. Use el método Class.getResource para ubicar su archivo en classpath; no confíe en el directorio actual:

    URL url = insertionSort.class.getResource("10_Random"); File file = new File(url.toURI());

  3. Especifique la ruta absoluta del archivo a través de los argumentos de la línea de comandos:

    File file = new File(args[0]);

En Eclipse:

  1. Elija "Ejecutar configuraciones"
  2. Ve a la pestaña "Argumentos"
  3. Coloque su "c: /my/file/is/here/10_Random.txt.or.whatever" en la sección "Argumentos del programa"

Deberías usar cualquiera

File file = new File("bin/10_Random.txt");

O

File file = new File("src/10_Random.txt");

Relativo a la carpeta del proyecto en Eclipse.


El archivo que lees debe tener exactamente el nombre de archivo que especifiques: "10_random" no "10_random.txt" no "10_random.blah", debe coincidir exactamente con lo que estás pidiendo. Puedes cambiar cualquiera de los dos para que se alineen, pero solo asegúrate de que lo hagan. Puede ser útil mostrar las extensiones de archivo en cualquier sistema operativo que esté utilizando.

Además, para la ubicación del archivo, debe estar ubicado en el directorio de trabajo (mismo nivel) que el ejecutable final (el archivo .class) que es el resultado de la compilación.


File Path Parece ser un problema aquí, asegúrese de que el archivo exista en el directorio correcto o proporcione la ruta absoluta para asegurarse de que está apuntando a un archivo correcto. Registre file.getAbsolutePath () para verificar que el archivo sea correcto.


Nadie parece haber abordado el hecho de que no estés ingresando nada en una matriz. Está configurando cada int que se lee a "i" y luego lo envía.

for (int i =0 ; sc.HasNextLine();i++) { array[i] = sc.NextInt(); }

Algo en este sentido seguirá estableciendo los valores de la matriz en el siguiente entero leído.

Que otro ciclo for puede mostrar los números en la matriz.

for (int x=0;x< array.length ; x++) { System.out.println("array[x]"); }


Primero compruebe la dirección del archivo, debe estar al lado de su archivo .java o en cualquier dirección que defina en la variable de entorno classpath . Cuando revises esto, prueba a continuación.

  1. debe usar un nombre de archivo por su extensión en el constructor del objeto File, como un ejemplo:

    File myFile = new File("test.txt");

  2. pero hay una mejor manera de usarlo dentro del objeto Scanner al pasar la dirección absoluta del nombre de archivo, por ejemplo:

    Scanner sc = new Scanner(Paths.get("test.txt"));

de esta forma, debe importar java.nio.file.Paths también.


Tienes que poner la extensión de archivo aquí

File file = new File("10_Random.txt");


Usa los siguientes códigos para leer el archivo

import java.io.File; import java.util.Scanner; public class ReadFile { public static void main(String[] args) { try { System.out.print("Enter the file name with extension : "); Scanner input = new Scanner(System.in); File file = new File(input.nextLine()); input = new Scanner(file); while (input.hasNextLine()) { String line = input.nextLine(); System.out.println(line); } input.close(); } catch (Exception ex) { ex.printStackTrace(); } } }

-> Esta aplicación está imprimiendo el contenido del archivo línea por línea


aquí hay algunos métodos que funcionan y son probados;

using Scanner

package io; import java.io.File; import java.util.Scanner; public class ReadFromFileUsingScanner { public static void main(String[] args) throws Exception { File file=new File("C://Users//pankaj//Desktop//test.java"); Scanner sc=new Scanner(file); while(sc.hasNextLine()){ System.out.println(sc.nextLine()); } } }


Aquí hay otra manera de leer todo el archivo (sin bucle) usando la clase de Scanner

package io; import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class ReadingEntireFileWithoutLoop { public static void main(String[] args) throws FileNotFoundException { File file=new File("C://Users//pankaj//Desktop//test.java"); Scanner sc=new Scanner(file); sc.useDelimiter("//Z"); System.out.println(sc.next()); } }

usando BufferedReader

package io; import java.io.*; public class ReadFromFile2 { public static void main(String[] args)throws Exception { File file=new File("C://Users//pankaj//Desktop//test.java"); BufferedReader br=new BufferedReader(new FileReader(file)); String st; while((st=br.readLine())!=null){ System.out.println(st); } } }

using FileReader

package io; import java.io.*; public class ReadingFromFile { public static void main(String[] args) throws Exception { FileReader fr=new FileReader("C://Users//pankaj//Desktop//test.java"); int i; while((i=fr.read())!=-1){ System.out.print((char) i); } } }


private void loadData () {

Scanner scanner = null; try { scanner = new Scanner(new File(getFileName())); while (scanner.hasNextLine()) { Scanner lijnScanner = new Scanner(scanner.nextLine()); lijnScanner.useDelimiter(";"); String stadVan = lijnScanner.next(); String stadNaar = lijnScanner.next(); double km = Double.parseDouble(lijnScanner.next()); this.voegToe(new TweeSteden(stadVan, stadNaar), km); } } catch (FileNotFoundException e) { throw new DbException(e.getMessage(), e); } finally { if(scanner != null){ scanner.close(); } } }