0

我有一个文件 dateTesting.java 。路径的目录如下: D:\workspace\Project1\src\dateTesting.java 。我希望这个文件的完整路径为 "D:\workspace\Project1\src" 本身,但是当我使用以下任何代码时,我只得到 "D:\workspace\Project1" 。src 部分没有来。

System.out.println(System.getProperty("user.dir"));
File dir2 = new File(".");
System.out.println(dir2.getCanonicalPath().toString());
System.out.println(dir2.getAbsolutePath());

如何获得完整路径为 "D:\workspace\Project1\src" ?我正在使用 Eclipse IDE 3.5

谢谢

4

5 回答 5

0

dateTesting.java是一个 Java 源文件,编译为字节码后不可用。它所在的源目录也不可用。

dir2File您在其中执行.class文件的目录。看起来这恰好是,D:\workspace\Project1但您不能依赖它。

于 2013-09-17T09:41:47.423 回答
0

您的 dir2 指向工作目录 ( new File("."))。您无法通过这种方式获取来源的位置。您的文件可能位于包内(例如your.company.date.dateTesting)。您应该手动将“src”连接到当前工作目录,然后将文件包点(.)替换为File.pathSeparator. 这样,您将构建文件的完整路径。

于 2013-09-17T09:44:32.990 回答
0

如果您这样做是为了尝试从类路径中读取文件,请查看以下答案: How to really read text file from classpath in Java

基本上你可以做到这一点

InputStream in = this.getClass().getClassLoader()
                            .getResourceAsStream("SomeTextFile.txt");

否则,如果您有其他要求,一种选择是在应用程序启动时将 src 目录作为 JVM arg 传递,然后将其读回。

于 2013-09-17T09:47:08.340 回答
0
String fullFilePath = "H:\\Shared\\Testing\\abcd.bmp";
    File file = new File(fullFilePath);

    String filePath = file.getAbsolutePath().substring(0,fullFilePath.lastIndexOf(File.separator));
    System.out.println(filePath);

输出:H:\Shared\Testing

于 2013-09-17T09:45:45.290 回答
0
/** The actual file running */
public static final File    JAR_FILE = new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath();

/** The path to the main folder where the file .jar is run */
public static final String  BASE_DIRECTORY  = (JAR_FILE != null ? JAR_FILE.getAbsolutePath().replace(JAR_FILE.getName(), "") : "notFound");

这在正常的 java 执行和 jar 执行中都适用。这是我在项目中使用的解决方案。

于 2013-09-17T10:33:35.463 回答