如何获取当前文件(包括java中的src文件)的完整路径

如何获取当前文件(包括java中的src文件)的完整路径,java,eclipse,Java,Eclipse,我有一个文件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.

我有一个文件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”?我正在使用EclipseIDE3.5


谢谢

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


dir2
是执行
.class
文件的目录的
文件。它碰巧是
D:\workspace\Project1
,但您不能依赖它。

您的dir2指向工作目录(
新文件(“.”
)。你无法通过这种方式获得来源的位置。您的文件可能位于包中(例如,
Your.company.date.dateTesting
)。您只需手动将“src”连接到当前工作目录,然后将文件包点(
)替换为
file.pathseptor
)。这样,您将构建文件的完整路径

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

如果您这样做是为了尝试从类路径读取文件,请查看以下答案:

基本上你可以做到这一点

InputStream in = this.getClass().getClassLoader()
                            .getResourceAsStream("SomeTextFile.txt");
否则,如果您有其他要求,一个选项是在应用程序启动时以JVM参数形式通过src目录,然后将其读回

/** 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执行中都适用。这是我在项目中使用的解决方案。

为什么要这样做?可能还有其他解决方案使用File File=new文件(“com/yourpackage/dateTesting.java”);sysout(file.getAbsoluteFile());我将在不同的项目中使用一个文件,并使用不同的src文件名……因此我希望动态获取它。@SuryaprakashPisay:该代码也没有给出src文件名。到目前为止,我已经完成了一项工作。我在Project directory中搜索文件夹,然后将文件夹名称与正则表达式匹配,然后获取它。谢谢您的回复。my.class文件当前位于以下路径D:\workspace\Project1\bin中,因此输出不应为“D:\workspace\Project1\bin”,谢谢您的回复。但是,这也不包括源文件夹名称。请在不同的文件夹中进行检查,因为这应该适用于我,可能您的文件位置有问题……它被命名为代码源,但实际上它是字节码源的路径,因此,它位于目标文件夹中。