Java文本文件I/O位置



我已经查看了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);

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

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

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

您只需要将输入文件放在项目的根文件夹中。

更新:

当您使用扫描仪获取用户输入时。然后隐藏用于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 

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

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

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

相关内容

  • 没有找到相关文章

最新更新