我已经查看了Java查找文件的其他线程,但我仍然感到困惑。
我有一个程序,在Eclipse(Juno)中作为java项目创建。我没有修改任何其他内容,现在只有一个主类。
当程序运行时,它需要三个输入:一个数字和两个字符串。第一个字符串是它必须从中读取输入的文件的名称,第二个字符串是它必须输出的文件。
如果我为输入字符串传入“input.txt”,并且有一个名为input.txt的文件,那么Java应该在哪里找到它?我已经尝试将它放在src,bin和项目根目录中。目前,我正在尝试访问该文件,如下所示:
File input = new File(args[1]);
其中args [1]是在开始时传递给程序的第一个字符串。当我这样做时,我得到一个错误“java.io.FileNotFoundException:input.txt(系统找不到指定的文件)”
我应该把文件放在哪里以便Java可以找到它?
以下是相关代码:
public class main {
public static int runs;
public static File input;
public static File output;
public static String line1;
public static String line2;
public static String line3;
public static String reactions;
/**
* @param args
*/
public static void main(String[] args){
if(args.length != 3)
System.out.println("Please provide 3 arguments.");
runs = Integer.parseInt(args[0]);
File input = new File(args[1]);
File output = new File(args[2]);
System.out.println(runs);
System.out.println(input);
try {
Scanner sc = new Scanner(input);
答案 0 :(得分:2)
对于这样的问题,请尝试使用getAbsolutePath()方法:
File input = new File(args[1]);
System.out.println(input.getAbsolutePath());
这将显示文件对象认为文件所在的位置。那是你应该放置文件的地方......或者可能相应地修改输入参数,以便程序在你想要文件的地方查找文件。
答案 1 :(得分:1)
您只需将输入文件放在项目的根文件夹中即可。
更新:
当您使用扫描仪获取用户输入时。然后隐藏你用于args的代码,即命令行参数。
Scanner sc = new Scanner(input);
runs = sc.nextInt(); // This will store your input line
in = sc.next(); // This will store your input file name
out = sc.next(); // This will store your output file name
答案 2 :(得分:0)
如果文件名不是绝对的(不是以{nix上的/
和Windows上的C:\
开头),那么它会在当前工作目录中查找。 Java程序可以使用System.getProperty ("user.dir")
获取其当前工作目录。
答案 3 :(得分:0)
在Eclipse中,您应该显式设置运行配置的执行目录。
默认使用的目录可能取决于项目配置,打包,输出目录等。因此最好(a)使用绝对路径(例如,以{{1}开头}或c:\
等)或(b)在运行配置中设置它。