Java文本文件I / O位置

时间:2013-02-06 17:51:00

标签: java file io

我已经查看了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 个答案:

答案 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)在运行配置中设置它。