Lendo um arquivo .txt usando a class Scanner em Java

Eu estou trabalhando em um programa Java que lê um arquivo de texto linha por linha, cada um com um número, leva cada número lança em uma matriz e, em seguida, tenta e usa a sorting de inserção para classificar a matriz. Preciso de ajuda para fazer o programa ler o arquivo de texto.

Estou recebendo as seguintes mensagens de erro:

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

Eu tenho uma cópia do arquivo .txt no meu “src” “bin” e pasta do projeto principal, mas ainda não é possível encontrar o arquivo. Eu estou usando o Eclipse pelo caminho.

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

Você tem que colocar a extensão do arquivo aqui

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

Use os seguintes códigos para ler o arquivo

 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 aplicação está imprimindo o conteúdo do arquivo linha a linha

  1. Certifique-se de que o nome do arquivo esteja correto (capitalização adequada, extensão correspondente etc. – conforme já sugerido).

  2. Use o método Class.getResource para localizar seu arquivo no caminho de class – não confie no diretório atual:

     URL url = insertionSort.class.getResource("10_Random"); File file = new File(url.toURI()); 
  3. Especifique o caminho absoluto do arquivo via argumentos da linha de comando:

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

No Eclipse:

  1. Escolha “Executar configurações”
  2. Vá para o separador “Argumentos”
  3. Coloque o seu “c: /my/file/is/here/10_Random.txt.or.whatever” na seção “Argumentos do programa”

Ninguém parece ter abordado o fato de que você não está digitando nada em um array. Você está definindo cada int que é lido como “i” e, em seguida, enviando-o.

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

Algo para esse efeito manterá a configuração dos valores da matriz para a próxima leitura do inteiro.

Que outro loop for pode exibir os números na matriz.

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

Aqui estão alguns methods de trabalho e testados;

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

Aqui está outra maneira de ler o arquivo inteiro (sem loop) usando a class 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); } } } 
  1. Você precisa especificar o nome do arquivo exato, incluindo a extensão do arquivo, por exemplo, 10_Random.txt .
  2. O arquivo precisa estar no mesmo diretório que o executável, se você quiser consultá-lo sem nenhum tipo de caminho explícito.
  3. Enquanto estamos nisso, você precisa verificar um int antes de ler um int . Não é seguro verificar com hasNextLine() e, em seguida, esperar um int com nextInt() . Você deve usar hasNextInt() para verificar se há realmente um int para pegar. Quão estritamente você escolhe impor a regra de um inteiro por linha depende de você, é claro.

Caminho do arquivo Parece ser um problema aqui, por favor, certifique-se que o arquivo existe no diretório correto ou forneça o caminho absoluto para certificar-se de que você está apontando para um arquivo correto. Por favor, registre o arquivo file.getAbsolutePath () para verificar se o arquivo está correto.

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

O arquivo que você leu deve ter exatamente o nome do arquivo que você especificou: "10_random" não “10_random.txt” e não “10_random.blah”, ele deve corresponder exatamente ao que você está pedindo. Você pode alterar qualquer um deles para que eles se alinhem, mas certifique-se de que eles estejam alinhados. Pode ajudar a mostrar as extensões de arquivo em qualquer sistema operacional que você esteja usando.

Além disso, para o local do arquivo, ele deve estar localizado no diretório de trabalho (mesmo nível) que o executável final (o arquivo .class) que é o resultado da compilation.

Primeiro verifique o endereço do arquivo, ele deve estar ao lado do arquivo .java ou em qualquer endereço que você defina na variável de ambiente classpath . Quando você verificar isso, tente abaixo.

  1. você deve usar um nome de arquivo por sua extensão em Construtor de object de arquivo, como um exemplo:

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

  2. mas existe uma maneira melhor de usá-lo dentro do object Scanner, passando o endereço absoluto do nome do arquivo, como um exemplo:

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

Desta forma, você deve importar java.nio.file.Paths também.

Você deveria usar

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

Ou

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

Relativo à pasta do projeto no Eclipse.