相关疑难解决方法(0)

使用Java获取当前工作目录

我想使用访问我当前的工作目录

 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 working-directory

955
推荐指数
15
解决办法
125万
查看次数

使用getResource()获取资源

我需要在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)

事实是,我总是得到文件不存在.我尝试了很多不同的路径,但我无法解决问题.任何提示?

java resources getresource

60
推荐指数
3
解决办法
16万
查看次数

在哪里使用java.nio.file.Path类的resolve()和relativize()方法?

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()作品?

什么是result1result2?的实际用途?

java path resolve

10
推荐指数
4
解决办法
8684
查看次数

了解java.nio.file.Path.relativize(Path other)

我试图熟悉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的路径.

提前致谢,

卢卡斯

java java-8

6
推荐指数
2
解决办法
7346
查看次数

Java从项目基目录读取文件夹

我有一个具有典型项目结构的 Maven 项目。在项目的基础上,我有一个名为res 的目录,其中包含一些资源(> 500 MB)。我正在尝试使用

this.class().getClassLoader().getResourceAsStream("res/xxx")

此代码片段从该文件夹中读取,但它返回空资源流。我在下面有一些解决方法,但由于下面解释的原因,这些方法都不可接受。

  1. 我可以将文件夹移动到 {base}/target/classes,它将被读取,但当我执行 mvn clean时它也会被清理。因此,这种方法行不通。由于某种原因,将路径指定为../../res/xxx也不起作用。
  2. 我可以将该文件夹移动到 {base}/src/resources,但随后它将被复制到 target/classes 和 jar。因此,这也是不可接受的。
  3. 虽然我愿意尝试其他一些 java API,但我可能必须使用类加载器机制,因为有一些外部库组件也尝试使用类似的方法访问 res文件夹。

有什么方法可以从项目基目录读取res文件夹吗?pom.xml文件中是否有一些设置可以帮助我解决这个问题?

java relative-path maven

3
推荐指数
1
解决办法
1万
查看次数