Java使用Scanner读取文件

时间:2016-12-15 14:10:09

标签: java java.util.scanner

我可以使用java.iojava.util.Scanner来阅读文件,但我不知道如何仅使用java.util.Scanner来阅读文件:

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

public class Main {
    public static void main(String[] args) throws IOException {
        String filePath = "C:\\IdeaProjects\\test\\src\\input.txt";
        Scanner sc = new Scanner(new File(filePath));
        int a, b;
        a = sc.nestInt();
        b = sc.nextInt();
    }
}

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

由于Scanner需要一个java.io.File对象,我认为只有在不使用任何java.io类的情况下才能使用Scanner读取。

以下是使用Scanner类读取文件的两种方法 - 使用默认编码和显式编码。这是如何read files in Java的长篇指南的一部分。

扫描仪 - 默认编码

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class ReadFile_Scanner_NextLine {
  public static void main(String [] pArgs) throws FileNotFoundException {
    String fileName = "c:\\temp\\sample-10KB.txt";
    File file = new File(fileName);

    try (Scanner scanner = new Scanner(file)) {
      String line;
      boolean hasNextLine = false;
      while(hasNextLine = scanner.hasNextLine()) {
        line = scanner.nextLine();
        System.out.println(line);
      }
    }
  }
}

扫描仪 - 显式编码

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class ReadFile_Scanner_NextLine_Encoding {
  public static void main(String [] pArgs) throws FileNotFoundException {
    String fileName = "c:\\temp\\sample-10KB.txt";
    File file = new File(fileName);

    //use UTF-8 encoding
    try (Scanner scanner = new Scanner(file, "UTF-8")) {
      String line;
      boolean hasNextLine = false;
      while(hasNextLine = scanner.hasNextLine()) {
        line = scanner.nextLine();
        System.out.println(line);
      }
    }
  }
}

答案 1 :(得分:0)

如果你想在结束前阅读文件:

String filePath = "C:\\IdeaProjects\\test\\src\\input.txt";
File file = new File(filePath);

    try {

        Scanner sc = new Scanner(file);

        while (sc.hasNextLine()) {
            int i = sc.nextInt();
            System.out.println(i);
        }
        sc.close();
    } 
    catch (FileNotFoundException e) {
        e.printStackTrace();
    }

p.s如果每一行只有Integer,我建议你使用 的Integer.parseInt(sc.readLine());
而不是sc.nextInt();

如果你看不懂请发给我文件上下文

答案 2 :(得分:-1)

好吧,如果你使用的是Mac,你可以在终端file.java<input.txt中输入它并输出到你输入的文件:file.java>output.txt output.txt是一个不存在的文件,而input.txt是一个预先存在的文件。