【问题标题】:How can I read a file from a path relative of my Main class in Java?如何从 Java 中 Main 类的相对路径读取文件?
【发布时间】:2018-05-04 09:17:15
【问题描述】:

在我的 Main.java 文件的同一目录中,我有一个名为 database 的包/文件夹,在数据库包中我有一个名为 的文件数据.txt

这是我的 Main.java 代码,但它抛出了这个错误:

java: 异常 java.io.FileNotFoundException

如何从相关文件中获取文件?我习惯于 Web 开发,通常使用 . dot like "./folder/file.txt" 有效。

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

    public class Main {

        public static void main(String[] args) {

            readFile();

        }

        public static void readFile() {

            File file = new File("./database/Data.txt");
            Scanner scanner = new Scanner(file);

            try {

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

        }

    }

【问题讨论】:

  • 你没有执行 Main.java。您正在执行 Main.class,它位于不同的文件夹中。
  • 向我们展示您的文件夹结构。否则我们只能猜测。
  • 我在问题中写过...
  • 您的 Java 文件是否在某种 src 文件夹和您的 database 文件夹中?如果是这样,将其移出一个。 class 文件在哪里?当您不更改路径时,您应该首先打印您当前所在的位置:System.out.println(new File(".").getCanonicalPath());。它列出了什么?它是你相信的地方吗?
  • 现在File 也不再读取文件了。围绕FilesPathsPath 使用NIO。例如,使用Files#lines 完成读取。

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


【解决方案1】:

您没有导入 FileNotFoundException 类。此外,scanner 语句会抛出应该在 try 中的异常。解决方法如下。

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

public class Main {

    public static void main(String[] args) {

        readFile();

    }

    public static void readFile() {

        File file = new File("database/Data.txt");

        try {
            Scanner scanner = new Scanner(file);
            while (scanner.hasNextLine()) {
                int i = scanner.nextInt();
                System.out.println(i);
            }
            scanner.close();
        }catch (FileNotFoundException e) {
            e.printStackTrace();
        }

    }

}

仅检查这些内容是否可以使用扫描仪读取。正确具有 int 的内容。否则会抛出 java.util.InputMismatchException。

【讨论】:

  • Data.txt 中的数据是什么?
  • 仍然无法正常工作... java.io.FileNotFoundException: database/Data.txt (没有这样的文件或目录)
  • 在这种情况下,您可能会使用 window 使用双斜杠,例如 - database//Data.txt
  • 你的包名是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-21
  • 2011-04-20
相关资源
最近更新 更多