Java:没有什么会在这个文件中读取
在我开始之前,我想说我已经花了4小时今天,昨天6小时,并在研究这个问题前3小时。我已经阅读了我可以找到的每一篇文章,按照该信的每条说明,重新启动了我的项目,重新安装了我的IDE(Netbeans),甚至新安装了我的操作系统,但我还没有找到一条有用的建议,所以我想我需要寻求帮助。Java:没有什么会在这个文件中读取
是的,我把文件放在正确的位置 ...事实上,我已经把文件放到了每个位置。在我的项目中的每个文件夹中都有一个副本,并且还在整个Projects文件夹中以及我的文档中都有一个副本。我已经检查并更改并多次默认根目录。请不要告诉我只使用异常处理程序。程序读入的文件保证存在并包含某些内容。
所以这里是我的问题: 我想输入并从文件中读取,但是,结果总是找不到文件。下面是我的代码示例(它确实是到该ATM):
这里有两个我得到的错误(我也得到Filenotfound错误,但我不认为我需要补充的是):
Exception in thread "main" java.lang.RuntimeException: Uncompilable source
code - unreported exception java.io.FileNotFoundException; must be caught or
declared to be thrown
at project2.Project2.main(Project2.java:14)
C:\Users\jarre\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53:
Java returned: 1
BUILD FAILED (total time: 1 second)
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1540)
at project2.Project2.main(Project2.java:24)
C:\Users\jarre\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53:
Java returned: 1
BUILD FAILED (total time: 0 seconds)
就是这样。文件名来源于参数,我尝试了每个可能的名称变体。我已经尝试在参数外面命名文件,如文件名本身以及显式文件路径。
使用扫描仪不会让我读任何东西。FileReader甚至不会运行。
该文本文件没有特殊的格式或字符,我使用了我提供的一个和多个我手工输入的,以防万一遇到我提供的问题。我也确保“.txt”永远不会被读取或使用过两次(无论如何,我都会保留我的扩展名)。 我已经检查过所有文件和Netbeans程序本身的属性和权限。我还确保文本文件包含在项目构建中。
我现在没有使用任何其他代码,因为我无法做任何事情,直到我确信我可以读取文件,然后输出一个。我也知道文本文件没有损坏,因为我可以在Python中阅读它们,但是,我必须使用Java并且必须使用Netbeans。
这对我来说是一个新问题,我一直能够很好地阅读文件,并且我已经用尽了我的选项。如果有人有任何想法,我真的需要一些帮助。
这读取没有问题的文件。我假设你正在运行JDK 8
/**
* Read a file example
* User: mduffy
* Date: 4/21/2017
* Time: 7:48 AM
* @link http://stackoverflow.com/questions/43529600/java-nothing-will-read-in-this-file
*/
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Project2 {
public static void main(String[] args) {
if (args.length > 0) {
BufferedReader reader = null;
try (BufferedReader bufferedReader = new BufferedReader(new FileReader(args[0]))) {
bufferedReader.lines().forEach(System.out::println);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} else {
System.out.println("Usage: Project2 <file>");
}
}
}
这是我使用的输入文件:
line1
line2
hello, michael
line 4
这是我得到的输出:
java Project2 .\src\main\resources\test.txt
line1
line2
hello, michael
line 4
Process finished with exit code 0
我不认为Java会与您混淆一个未找到的文件是一个未找到的文件,请在屏幕上对您正在处理的文件和目录进行详细说明。
我想你考虑看看以下内容:
我希望这有助于可能的代码与你同在。
我欣赏输入。该文件存在于每个可能的子文件夹中,所以没有办法像“它不在那里”那样简单。恐怕我现在不在,但当我回来时,我会分享我的意思。 – Jarbcd
好的,一旦你得到截图,请在这里留言,这样我就可以得到通知。 –
第一个异常(java.lang.RuntimeException: Uncompilable source code
)被抛出,因为您向我们显示的代码是无效的java源代码。
new FileReader(args[0])
被声明为投掷FileNotFoundException
并根据java语言的规则,您必须捕获此异常或声明您的主要方法为抛出此异常。解决这个问题
一种方法是写你这样的主要方法:
public static void main(String[] args) throws FileNotFoundException {
FileReader inputFile = new FileReader(args[0]);
}
看来你已经解决了这个问题,因为第二个例外(java.util.NoSuchElementException: No line found
)由Scanner.nextLine()
方法抛出如果您尝试读取文件的末尾。
由于您尚未使用Scanner
类显示任何代码,因此很难判断出现问题的位置。
由于事实上,我已经把文件中的每个位置。在我的项目中的每个文件夹中都有一个副本,并且还在整个Projects文件夹中以及我的文档中都有一个副本。
不这样做。您正在创建一个难以清理的文件。如果你想知道你的程序读取该文件,然后将下面这个简单的行告诉你确切的路径和文件名:
System.out.println(new File(args[0]).getAbsolutePath());
你有没有像这样一个简单的小例子,尝试:
package project2;
import java.io.FileReader;
import java.io.*;
import java.util.Scanner;
public class Project2 {
public static void main(String[] args) {
System.out.println(new File(args[0]).getAbsolutePath());
FileReader inputFile = new FileReader(args[0]);
try (Scanner s = new Scanner(inputFile)) {
while (s.hasNextLine()) {
System.out.println(s.nextLine());
}
}
}
}
它应该打印出你的文件的名称与完整的路径,然后逐行的文件的内容。
我很欣赏这个输入。我做的第一件事是声明这个方法是抛出这个异常,但它仍然说该文件找不到。 问题在于错误不应该出现在第一位 – Jarbcd
@Jarbcd您是否尝试过按照建议打印出文件名和路径? ('System.out.println(new File(args [0])。getAbsolutePath());') –
'FileNotFoundException'意味着什么它说。在尝试访问该文件之前,打印完全限定路径并验证该文件是否正在尝试读取它的文件_actually_,因为显然它不是。 '文件f =新文件(args [0]); System.out.println(f.getAbsolutePath());' –
已经完成了。我正在使用的路径与正确的文件一起显示。我的意思是,当我说我把文件的副本放在每个文件夹和子文件夹中时,以防万一。 – Jarbcd
请分享您用来调用您的应用程序的命令,以及我上述请求的输出。路径是否有空格?特殊字符?你有适当的特权去寻找这个位置? –