我有一个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
谢谢
答案 0 :(得分:0)
dateTesting.java
是一个Java源文件,在编译为字节码后不可用。它所在的源目录也不可用。
dir2
是您执行File
文件的目录的.class
。它发现这恰好是D:\workspace\Project1
,但您不能依赖此。
答案 1 :(得分:0)
您的dir2指向工作目录(new File(".")
)。您无法通过这种方式获取源的位置。您的文件可能位于包内(例如your.company.date.dateTesting
)。您应该手动将“src”连接到当前工作目录,然后用.
替换文件包点(File.pathSeparator
)。这样,您将构建文件的完整路径。
答案 2 :(得分: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:\共享\测试
答案 3 :(得分:0)
如果您这样做是为了尝试从类路径中读取文件,那么请查看以下答案: How to really read text file from classpath in Java
基本上你可以这样做
InputStream in = this.getClass().getClassLoader()
.getResourceAsStream("SomeTextFile.txt");
否则,如果您有其他要求,一个选项是在应用程序开始时将src目录作为JVM arg传递,然后再将其读回。
答案 4 :(得分: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执行都有效。这是我在项目中使用的解决方案。