我制作了一个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包含以下文字:
- 在团队合作中我有什么贡献:
醇>
一个。我想出了新的想法 湾我跟进事情是因为我基本上都是 彻底
C。我评估什么是现实和可行的 d。我主张客观和公正的替代方法
当试图跑步时,我得到“一些错误没有找到行”
我尝试从文本中删除所有特殊字符,我可以阅读它,所以我尝试以这种方式将“UTF-8”添加到我的扫描仪。
Scanner scan = new Scanner(new File("persontest.txt"), "UTF-8");
然而,这似乎没有做任何事情。我仍然得到“没有发现线”
如果在开始之前我已经问过这个问题,我就进行了彻底的搜索,但是我要么无法理解问题所提出的问题,要么根据我的问题提供答案。
我根据Troubleshoot和Harshas示例将扫描仪更改为bufferedreader,现在即使使用特殊字符也可以读取文本,但是它不能正确显示。我刚拿到方盒子。这是一个小问题。
答案 0 :(得分: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 ,则它将被归类为空,但不会为空。
答案 1 :(得分:1)
如果persontest.txt在classpath中(即在jar或源文件夹中),您可以使用:
YourClass.class.getClassloader().getResourceAsStream("persontest.txt")
答案 2 :(得分:-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");