Como abrir um arquivo txt e ler números em Java

Como posso abrir um arquivo .txt e ler números separados por inputs ou espaços em uma lista de matriz?

Leia o arquivo, analise cada linha em um inteiro e armazene em uma lista:

List list = new ArrayList(); File file = new File("file.txt"); BufferedReader reader = null; try { reader = new BufferedReader(new FileReader(file)); String text = null; while ((text = reader.readLine()) != null) { list.add(Integer.parseInt(text)); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (reader != null) { reader.close(); } } catch (IOException e) { } } //print out the list System.out.println(list); 

Uma alternativa muito mais curta está abaixo:

 Path filePath = Paths.get("file.txt"); Scanner scanner = new Scanner(filePath); List integers = new ArrayList<>(); while (scanner.hasNext()) { if (scanner.hasNextInt()) { integers.add(scanner.nextInt()); } else { scanner.next(); } } 

Um Scanner interrompe sua input em tokens usando um padrão delimitador, que, por padrão, corresponde ao espaço em branco. Embora o delimitador padrão seja o espaço em branco, ele encontrou com êxito todos os inteiros separados por um novo caractere de linha.

Boas notícias no Java 8, podemos fazer isso em uma linha:

 List ints = Files.lines(Paths.get(fileName)) .map(Integer::parseInt) .collect(Collectors.toList()); 
  try{ BufferedReader br = new BufferedReader(new FileReader("textfile.txt")); String strLine; //Read File Line By Line while ((strLine = br.readLine()) != null) { // Print the content on the console System.out.println (strLine); } //Close the input stream in.close(); }catch (Exception e){//Catch exception if any System.err.println("Error: " + e.getMessage()); }finally{ in.close(); } 

Isto irá ler linha por linha,

Se você não são saperados por newline char. então no lugar de

  System.out.println (strLine); 

Você pode ter

 try{ int i = Integer.parseInt(strLine); }catch(NumberFormatException npe){ //do something } 

Se estiver separado por espaços, então

 try{ String noInStringArr[] = strLine.split(" "); //then you can parse it to Int as above }catch(NumberFormatException npe){ //do something } 
 File file = new File("file.txt"); Scanner scanner = new Scanner(file); List integers = new ArrayList<>(); while (scanner.hasNext()) { if (scanner.hasNextInt()) { integers.add(scanner.nextInt()); } else { scanner.next(); } } System.out.println(integers);