当前位置: 首页 > 知识库问答 >
问题:

Java路径。get....readAllBytes(path))不使用相对路径

姬念
2023-03-14

我是Java新手,正在尝试构建一个FX应用程序。我的一个函数旨在用其他字符串替换某些字符串。只要我定义了目标文件的绝对路径,脚本就可以正常工作,但当我使用相对路径时,脚本就会中断。

问题出在方法“ReadAllBytes”中,该方法只适用于完整路径。但是我需要相对路径,因为文件夹位置会有所不同。

目标文件位于项目文件夹中。是否有其他方法可以用来读取文件内容,而不需要绝对路径?

提前多谢。下面是代码片段:

    if (checkbox.isSelected()) {
        //this works .....
        Path path = Paths.get("//home/../../../../Target.fxml")
        Charset charset = StandardCharsets.UTF_8; 
        String content = new String(Files.readAllBytes(path));
        content = content.replaceAll("text_old" , "text_new");
        Files.write(path, content.getBytes(charset));

        //this doesn't work...
        Path path = Paths.get("Target.fxml");


Caused by: java.nio.file.NoSuchFileException: Target.fxml

共有1个答案

阳宗清
2023-03-14

异常根源java.nio.file.nosuchFileException:target.fxml确实意味着该文件不存在于给定位置。

如果您正在执行paths.get(“target.fxml”),您将在当前工作目录中查找文件target.fxml。但是,由于文件位于src/javafxapplication/target.fxml中,并且程序是从另一个目录运行的,target.fxml无法找到。

您可以使用以下方法检查应用程序的工作目录:

System.out.println(System.getProperty("user.dir")));
Paths.get("../src/javafxapplication/Target.fxml")

但是,这是一种不好的做法,因为src文件夹通常不是分发包的一部分。您可能应该将target.fxml复制到另一个位置,或者使用Apache Maven之类的构建工具创建一个包含target.fxml的jar文件,并使用classloader.getResource()从jar文件中读取内容。

 类似资料:
  • 问题内容: 我是Java的新手,正在尝试构建FX应用程序。我的功能之一是用其他字符串替换某些字符串。只要我定义目标文件的绝对路径,脚本就可以正常工作,但是当我使用相对路径时,脚本就会中断。 问题出在方法“ readAllBytes”中,该方法仅适用于完整路径。但是我需要相对路径,因为文件夹位置会有所不同。 目标文件在项目文件夹中。是否可以使用其他方法读取文件内容,而无需绝对路径? 非常感谢。以下是

  • 稳定性: 2 - 稳定的 path 模块提供了一些工具函数,用于处理文件与目录的路径。可以通过以下方式使用: const path = require('path'); Windows 与 POSIX path 模块的默认操作会根据 Node.js 应用程序运行的操作系统的不同而变化。 比如,当运行在 Windows 操作系统上时,path 模块会认为使用的是 Windows 风格的路径。 例如

  • 该类定义了二维路径,提供了一些类似2D Canvas API的方法来创建或者构造二维路径。 代码示例 const path = new THREE.Path(); path.lineTo( 0, 0.8 ); path.quadraticCurveTo( 0, 1, 0.2, 1 ); path.lineTo( 1, 1 ); const points = path.getPoints(); co

  • 本文向大家介绍Linux 相对路径和绝对路径的使用,包括了Linux 相对路径和绝对路径的使用的使用技巧和注意事项,需要的朋友参考一下 01. 概述 绝对路径和相对路径在shell环境中经常遇到,各有用处。有时候相对路径比较方便,有时候绝对路径比较方便。 02. 绝对路径(Absolute Pathname) 绝对路径必定由**/**开头 绝对路径是为档案/文件的所在位置做指向 在任何时候,都可以

  • 问题内容: Popen的文档提到您不能指定相对于“更改工作目录” kwarg的可执行路径。 如果不是None,则子目录的当前目录将在执行之前更改为 。 请注意,搜索可执行文件时不会考​​虑此目录,因此您无法指定程序相对于的路径。 但是python在我的系统上的行为似乎与这种说法直接矛盾: 是否在使用相对路径来依赖于平台且不应依赖的东西?还是这是一个文档错误? (从评论这个问题产卵由glglgl这里

  • 问题内容: 如果使用绝对路径,则无法将整个目录移动到新位置。如果使用相对路径,则无法将单个文件移动到新位置。 这里有什么解决方案?您是否设置了一个包含根路径并从那里开始的配置文件?还是您有类似的规则:永不移动文件? 我在某些项目中看到人们使用dirname( FILE )。我的意思是,为什么不简单地将其删除,因为目录名还是相对的(取决于文件所在的位置)? 问题答案: 您应该使用一个配置文件,该配置