我想使用访问我当前的工作目录
String current = new java.io.File( "." ).getCanonicalPath();
System.out.println("Current dir:"+current);
String currentDir = System.getProperty("user.dir");
System.out.println("Current dir using System:" +currentDir);
Run Code Online (Sandbox Code Playgroud)
输出:
Current dir: C:\WINDOWS\system32
Current dir using System: C:\WINDOWS\system32
Run Code Online (Sandbox Code Playgroud)
我的输出不正确,因为C盘不是我当前的目录.在这方面需要帮助.
我需要在java项目中获取资源图像文件.我在做的是:
URL url = TestGameTable.class.getClass().
getClassLoader().getResource("unibo.lsb.res/dice.jpg");
Run Code Online (Sandbox Code Playgroud)
目录结构如下:
unibo/
lsb/
res/
dice.jpg
test/
..../ /* other packages */
Run Code Online (Sandbox Code Playgroud)
事实是,我总是得到文件不存在.我尝试了很多不同的路径,但我无法解决问题.任何提示?
Path p1 = Paths.get("/Users/jack/Documents/text1.txt");
Path p2 = Paths.get("/Users/jack/text2.txt");
Path result1 = p1.resolve(p2);
Path result2 = p1.relativize(p2);
System.out.println("result1: "+result1);
System.out.println("result2: "+result2);
Run Code Online (Sandbox Code Playgroud)
OUTPUT
result1: /Users/jack/text2.txt
result2: ../../text2.txt
Run Code Online (Sandbox Code Playgroud)
我不知道如何resolve()和relativize()作品?
什么是result1和result2?的实际用途?
我试图熟悉java.nio.file.Path.relativize()无济于事.
我已经阅读了javadocs,我看过了一些例子.但是,我仍然无法理解以下示例(我使用Linux,向窗口用户道歉):
程序的工作目录是:/ home/userspace/workspace/java8.
有两个文件:/home/userspace/workspace/java8/zoo.txt和/home/userspace/temp/delete/dictionary.txt
以下程序调用Path.relativize():
package certExam.java8.ch9NIO.paths;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Relativize
{
public static void main(String[] args)
{
Path relativePathToZoo = Paths.get("zoo.txt");
Path relativePathToDictionary = Paths.get("../../temp/delete/dictionary.txt");
System.out.println("relativePathToZoo.relativize(relativePathToDictionary): "+relativePathToZoo.relativize(relativePathToDictionary));
System.out.println("relativePathToZoo.relativize(relativePathToDictionary).toAbsolutePath(): "+relativePathToZoo.relativize(relativePathToDictionary).toAbsolutePath());
System.out.println("relativePathToZoo.relativize(relativePathToDictionary).toAbsolutePath().normalize(): "+relativePathToZoo.relativize(relativePathToDictionary).toAbsolutePath().normalize());
System.out.println("relativePathToDictionary.relativize(relativePathToZoo): "+relativePathToDictionary.relativize(relativePathToZoo));
System.out.println("relativePathToDictionary.relativize(relativePathToZoo).toAbsolutePath().normalize(): "+relativePathToDictionary.relativize(relativePathToZoo).toAbsolutePath().normalize());
System.out.println();
}
}
Run Code Online (Sandbox Code Playgroud)
输出是:
relativePathToZoo.relativize(relativePathToDictionary): ../../../temp/delete/dictionary.txt
relativePathToZoo.relativize(relativePathToDictionary).toAbsolutePath(): /home/userspace/workspace/java8/../../../temp/delete/dictionary.txt
relativePathToZoo.relativize(relativePathToDictionary).toAbsolutePath().normalize(): /home/temp/delete/dictionary.txt
relativePathToDictionary.relativize(relativePathToZoo): ../../../../../zoo.txt
relativePathToDictionary.relativize(relativePathToZoo).toAbsolutePath().normalize(): /zoo.txt
Run Code Online (Sandbox Code Playgroud)
我的问题,我无法理解的是:为什么relativePathToDictionary.relativize(relativePathToZoo)输出../../../../../zoo.txt?
规范化后,它会让你认为zoo.txt存在于根目录中.
relativize()如何解决这样一条深刻的道路?我知道relativize()与当前工作目录相关,因此它会向每个路径添加.. 但是我无法理解,它如何解决了与fonts.txt相关的zoo.txt的路径.
提前致谢,
卢卡斯
我有一个具有典型项目结构的 Maven 项目。在项目的基础上,我有一个名为res 的目录,其中包含一些资源(> 500 MB)。我正在尝试使用
this.class().getClassLoader().getResourceAsStream("res/xxx")
此代码片段从该文件夹中读取,但它返回空资源流。我在下面有一些解决方法,但由于下面解释的原因,这些方法都不可接受。
有什么方法可以从项目基目录读取res文件夹吗?pom.xml文件中是否有一些设置可以帮助我解决这个问题?