1

我查看了其他关于 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);
4

4 回答 4

2

对于这样的问题,请尝试使用 getAbsolutePath() 方法:

File input = new File(args[1]);
System.out.println(input.getAbsolutePath());

这向您显示文件对象认为文件在哪里。那是您应该放置文件的位置......或者可能相应地修改输入参数,以便程序在您希望文件所在的位置查找文件。

于 2013-02-06T17:56:10.703 回答
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 
于 2013-02-06T17:53:10.760 回答
0

/如果文件名不是绝对的(在 *nix 和Windows 上不以开头C:\),则在当前工作目录中查找。Java 程序可以使用System.getProperty ("user.dir").

于 2013-02-06T17:53:26.917 回答
0

在 Eclipse 中,您应该为运行配置显式设置执行目录。

默认使用的目录可能取决于项目配置、打包、输出目录等,因此最好 (a) 使用绝对路径(例如,以 ac:\/等开头)或 (b) 在运行配置中设置它.

于 2013-02-06T17:54:17.480 回答