1

我制作了一个 GUI 和一个按钮。
我的代码如下所示:

private void jButtonSubmitActionPerformed(java.awt.event.ActionEvent evt) {
try {
  Scanner scan = new Scanner(new File("persontest.txt"));
  while(scan.hasNext()) {
    System.out.println(scan.nextLine());
  }
} catch (FileNotFoundException ex) {
  System.out.println("File not found" + ex.getMessage());
} catch (Exception e) {
  System.out.println("Some error" + e.getMessage());
}

persontest.txt 包含以下文本:

  1. 在团队合作中我能做出什么贡献
    :我想出了新的想法
    B. 我跟进事情,因为我基本上是彻底的
    c。我评估什么是现实可行的
    d. 我提倡客观和公正的替代方法

尝试运行时,我得到“一些错误未找到行”
我尝试从文本中删除所有特殊字符并且我可以阅读它,所以我尝试以这种方式将“UTF-8”添加到我的扫描仪。

Scanner scan = new Scanner(new File("persontest.txt"), "UTF-8");   

然而,这似乎并没有做任何事情。我仍然得到“找不到线路”。
如果在抱歉之前有人问过这个问题,我进行了彻底的搜索,但我要么无法理解所提出的问题,要么无法理解针对我的问题提供的答案。
根据 Troubleshoot 和 Harshas 示例,我将扫描仪更改为 bufferedreader,即使使用特殊字符,它现在也会读取文本,但无法正确显示它们。我只是得到方盒子。这是一个小问题。

4

3 回答 3

1

如果 persontest.txt 在类路径中(即在 jar 或源文件夹中),您可以使用:

YourClass.class.getClassloader().getResourceAsStream("persontest.txt")
于 2013-10-14T13:40:46.163 回答
1

首先,确保persontest.txt在你的主项目文件夹中,而不是它的子文件夹,否则它不会找到它。

我建议使用 BufferedReader 逐行读取。就是这样:

BufferedReader input = new BufferedReader(new FileReader("persontest.txt"));
String line;
while ((line = input.readLine()) != null && !line.isEmpty()) {
    System.out.println(line);
}

检查该行是否为空并检查它不等于 null 是一种很好的做法。例如,如果一行等于\t,它将被归类为空,但不归类为 null。

于 2013-10-14T13:37:32.643 回答
-1

你可以简单地使用

    try {

        String line;

        BufferedReader br = new BufferedReader(new FileReader("persontest.txt"));

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

    } catch (IOException e) {
        e.printStackTrace();
    } 

如果您需要使用扫描仪进行操作,您可以尝试使用

Scanner reader = new Scanner(new FileInputStream("persontest.txt");
于 2013-10-14T13:39:51.933 回答