Java:此文件中没有任何内容

时间:2017-04-20 20:45:41

标签: java netbeans file-io java.util.scanner filereader

在我开始之前,我想说我今天花了4个小时,昨天花了6个小时,在研究这个问题之前的3个小时。我已经阅读了我能找到的每一篇文章,按照每个指令写信,重新启动我的项目,重新安装我的IDE(Netbeans),甚至新安装了我的操作系统,我还没有找到一条有用的建议,所以我想我需要寻求帮助。

并且是的,我已将文件放在正确的位置 ...事实上,我已将文件放在每个位置。我的项目中的每个文件夹中都有一个副本,还有整个Projects文件夹中的副本,以及My Documents中的副本。我已多次检查并更改并默认根目录。请不要告诉我只使用异常处理程序。程序读入的文件保证存在并包含一些内容。

所以这是我的问题: 我正在尝试输入和读取文件,但结果总是无法找到该文件。这是我的代码的一个例子(它真的是这个atm):

package project2;
import java.io.FileReader;
import java.io.*;
import java.util.Scanner;
public class Project2 {
    public static void main(String[] args) {
        FileReader inputFile = new FileReader(args[0]);
    }
}

以下是我遇到的两个错误(我也遇到了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)

就是这样。文件名来自参数,我尝试了名称的每个可能的变体。我试过在参数之外命名文件,只是文件名本身以及显式文件路径。

使用扫描仪不会让我读取任何内容。文件读取器甚至不会运行。

文本文件没有特殊的格式或字符,我已经使用了我提供的那个和我输入的多个,以防万一我遇到的问题。我还确保“.txt”永远不会被读取或使用两次(无论如何我保持扩展名)。 我检查了所有文件的属性和权限以及Netbeans程序本身。我还确保文本文件包含在项目构建中。

我现在没有使用任何其他代码,因为在我确定我可以读取文件然后输出一个之前我无法做任何事情。我也知道文本文件没有损坏,因为我可以用Python阅读它们,但是,我必须使用Java,我必须使用Netbeans。

对我来说这是一个新问题,我一直能够很好地阅读文件,而且我已经筋疲力尽了。如果有人有任何想法,我真的需要一些帮助。

3 个答案:

答案 0 :(得分:2)

抛出第一个异常(java.lang.RuntimeException: Uncompilable source code),因为您向我们展示的代码不是有效的java源代码。

new FileReader(args[0])被声明为抛出FileNotFoundException,并且根据java语言的规则,您必须捕获此异常或将main方法声明为抛出此异常。

解决此问题的一种方法是编写这样的主方法:

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());
            }
        }
    }
}

它应该用完整的路径打印出文件的名称,然后逐行打印出文件的内容。

答案 1 :(得分:0)

我不认为Java正在乱搞你找不到的文件是一个未找到的文件,请通过你正在处理的文件和目录的屏幕详细说明这个问题。

我希望您考虑一下以下内容:

  1. FileReader
  2. Path of projects on Netbeans
  3. 我希望这有助于代码与您同在。

答案 2 :(得分:0)

这样可以毫无问题地读取文件。我假设您正在运行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