8

我正在尝试用java读取文件:

Public class Test{

public static void main (String [] args) throws IOException {

BufferedReader f = new BufferedReader(new FileReader("test.in"));

//...

PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("test.out")));

//...                                 

}

}

1)“test.in”的位置应该在哪里?(src?bin????)

2)“test.out”将位于哪里?

4

5 回答 5

9

在 System.getProperty("user.dir") 指定的目录中查找相对路径文件

于 2012-05-17T21:15:52.923 回答
4

答案是工作文件夹,即执行“java ...”命令的文件夹。例如,这是 eclipse 项目中的项目文件夹。

于 2012-05-17T21:16:18.733 回答
3

通常它是您正在执行的 Java 文件的确切位置。因此,如果您在 C:\ 中使用您的 Java 文件并且您在没有指定路径的情况下查找文件,它将在 C:\ 中查找,并且输出文件也将在 C:\

但是,如果您使用的是 Netbeans 之类的东西,您只需将文件放在特定项目的 netbeans 项目文件夹(根目录文件夹)中。不在项目的源文件夹或 bin 文件夹中。

于 2012-05-17T21:13:28.150 回答
1

我可能在这个问题上花了太长时间,但是:

C:\temp>notepad test_in.txt =>

你好Java输入!

在同一目录中,创建“Test.java”:

package com.mytest;

import java.io.*;

public class Test {

  public static void main (String [] args) throws IOException {
    System.out.println ("Current directory is " + new File(".").getAbsolutePath());

    System.out.println ("Reading file " + INPUT_FILE + "...");
    BufferedReader fis = 
      new BufferedReader(new FileReader(INPUT_FILE));
    String s = fis.readLine ();
    fis.close ();
    System.out.println ("Contents: " + s + ".");

    System.out.println ("Writing file " + INPUT_FILE + "...");
    PrintWriter fos = 
      new PrintWriter(new BufferedWriter(new FileWriter("test_out.txt")));
    fos.println ("Hello Java output");
    fos.close ();
    System.out.println ("Done.");
  }

  private static final String INPUT_FILE = "test_in.txt";
  private static final String OUTPUT_FILE = "test_out.txt";
}

最后,运行它——指定完整的包名:

C:\temp>javac -d . Test.java

C:\temp>dir com\mytest
 Volume in drive C has no label.
 Volume Serial Number is 7096-6FDD

 Directory of C:\temp\com\mytest

05/17/2012  02:23 PM    <DIR>          .
05/17/2012  02:23 PM    <DIR>          ..
05/17/2012  02:29 PM             1,375 Test.class
               1 File(s)          1,375 bytes
               2 Dir(s)  396,478,521,344 bytes free

C:\temp>java com.mytest.Test
Current directory is C:\temp\.
Reading file test_in.txt...
Contents: Hello Java input!.
Writing file test_in.txt...
Done.

C:\temp>dir/od test*.txt
 Volume in drive C has no label.
 Volume Serial Number is 7096-6FDD

 Directory of C:\temp

05/17/2012  02:24 PM                17 test_in.txt
05/17/2012  02:29 PM                19 test_out.txt
               2 File(s)             36 bytes

'希望这有助于解释一些事情,包括:

  • 关于编译和运行的“默认目录”

  • “包”如何与“目录”相关联

  • Java会将您的类文件放在包目录中的事实(不一定是您的工作目录)

于 2012-05-17T21:31:20.710 回答
1

Eclipse 在项目的根文件夹(项目名称文件夹)中查找该文件。所以你可以让 src/test.in 在项目的 src 文件夹中找到文件。

于 2015-10-12T18:06:26.733 回答