Java文本文件I/O位置

Java文本文件I/O位置,java,file,io,Java,File,Io,我已经研究了Java查找文件的其他线程,但我仍然感到困惑 我有一个程序,是作为java项目在Eclipse(Juno)中创建的。我没有对其他任何东西做任何修改,现在只有一个主类 当程序运行时,它接受三个输入:一个数字和两个字符串。第一个字符串是它必须从中读取输入的文件名,第二个字符串是它必须将输出放入的文件名 如果我为输入字符串传入“input.txt”,并且有一个名为input.txt的文件,Java应该在哪里找到它?我试着把它放在src、bin和项目根目录中。目前,我正在尝试访问该文件,如下

我已经研究了Java查找文件的其他线程,但我仍然感到困惑

我有一个程序,是作为java项目在Eclipse(Juno)中创建的。我没有对其他任何东西做任何修改,现在只有一个主类

当程序运行时,它接受三个输入:一个数字和两个字符串。第一个字符串是它必须从中读取输入的文件名,第二个字符串是它必须将输出放入的文件名

如果我为输入字符串传入“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);

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

更新:

当您使用扫描仪获取用户输入时。然后隐藏用于参数ie命令行参数的代码

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

对于类似问题,请尝试使用getAbsolutePath()方法:


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

该文件当前位于项目的根文件夹中,但不起作用。@elykl33t确实要将文件保留在根文件夹中吗?它应该是有用的。尝试将
/
附加到文件中。是的,我已经仔细检查了它是否在正确的目录中。不确定这是否重要,但导致我出错的实际行是
Scanner sc=new Scanner(输入)@elykl33t请添加此代码,并向我们显示更新的代码片段,说明您是如何从中访问元素的console@elykl33t我更新了答案。如果这对您有帮助或有任何问题,请告诉我。完成此操作后,打印的目录与文件的目录相同。AKA文件是程序认为它所在的位置。实际给出错误的行是
Scanner sc=新扫描仪(输入)您正在传入文件名还是目录名?println显示了什么?这是我的相关代码:
File input=new File(args[1]);扫描仪sc=新扫描仪(输入)
args[1]是在运行时传入程序的参数中传递的第二个值。因此,如果我使用参数'2input.txt output.txt'arg[0]=2,arg[1]=input.txt,arg[2]=output.txt运行它。我已确认这些值与预期值一致。
File input = new File(args[1]);
System.out.println(input.getAbsolutePath());