如何将文本文件作为参数传递?

Vic*_*tor 8 java

我试图写一个程序通过args读取文本文件,但是当我运行它时,它总是说文件无法找到,即使我把它放在与我正在运行的main.java相同的文件夹中.有谁知道我的问题的解决方案或更好的阅读文本文件的方法?

Bal*_*usC 9

不要使用相对路径java.io.File.

它将变为相对于当前工作目录,这取决于您运行应用程序的方式,而应用程序又无法从应用程序内部进行控制.这只会导致便携性问题.如果从Eclipse内部运行它,路径将相对于/path/to/eclipse/workspace/projectname.如果从命令控制台内部运行它,它将相对于当前打开的文件夹(即使您按绝对路径运行代码!).如果通过双击JAR来运行它,它将相对于JAR的根文件夹.如果你在网络服务器中运行它,它将相对于/path/to/webserver/binaries.等等.

始终使用绝对路径java.io.File,没有任何借口.

为了获得最佳的可移植性并减少绝对路径的麻烦,只需将文件放在运行时类路径覆盖的路径中(或将其路径添加到运行时类路径).通过这种方式,您可以获取文件Class#getResource()或其内容Class#getResourceAsStream().如果它与当前类位于同一文件夹(包)中,则它已经在类路径中.要访问它,只需:

public MyClass() {
    URL url = getClass().getResource("filename.txt");
    File file = new File(url.getPath());
    InputStream input = new FileInputStream(file);
    // ...
}
Run Code Online (Sandbox Code Playgroud)

要么

public MyClass() {
    InputStream input = getClass().getResourceAsStream("filename.txt");
    // ...
}
Run Code Online (Sandbox Code Playgroud)