我是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
异常根本原因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")));
这很可能是classes
目录。例如,如果要指向classes
该src
文件夹,则可以使用以下路径:
Paths.get("../src/javafxapplication/Target.fxml")
但是,这是一种不好的做法,因为该src
文件夹通常不属于分发包的一部分。您可能应该将其复制Target.fxml
到另一个位置,或使用诸如Apache
Maven之类的构建工具来创建一个包含的jar文件,并使用Target.fxml
读取jar文件中的内容ClassLoader.getResource()
。
我是Java新手,正在尝试构建一个FX应用程序。我的一个函数旨在用其他字符串替换某些字符串。只要我定义了目标文件的绝对路径,脚本就可以正常工作,但当我使用相对路径时,脚本就会中断。 问题出在方法“ReadAllBytes”中,该方法只适用于完整路径。但是我需要相对路径,因为文件夹位置会有所不同。 目标文件位于项目文件夹中。是否有其他方法可以用来读取文件内容,而不需要绝对路径? 提前多谢。下面是代码
问题内容: 我知道栈上有很多类似的问题。但是常见的答案似乎并不适合我。 我有这样的文件结构 我发现如果我在test.py中包含代码 要么 我将能够引用目录中的模块。但这没有用。 所以我尝试添加到路径,它正确添加了它: 但是即使是现在,当我尝试上述导入语句时,我仍然收到错误消息 要么 有什么明显的我想念的吗? 有没有办法检查我是否正确配置了文件,或查看我的程序包层次结构? 问题答案: 您需要更新,这
我正在尝试构建一个java。net应用程序,其中客户端和服务器必须通过串行收集类型(如字节[])相互发送数据。 由于未知原因,我的DataInputStream无法解析方法readAllBytes()。 一个朋友把它扔进了IDE,它没有抱怨。我不确定这怎么会是一个版本问题,但我检查了一下,并没有误解我的项目。我正在使用Java 8。 实际上,我确信应该支持这个方法,但我不明白为什么不支持,因为它是
问题内容: Popen的文档提到您不能指定相对于“更改工作目录” kwarg的可执行路径。 如果不是None,则子目录的当前目录将在执行之前更改为 。 请注意,搜索可执行文件时不会考虑此目录,因此您无法指定程序相对于的路径。 但是python在我的系统上的行为似乎与这种说法直接矛盾: 是否在使用相对路径来依赖于平台且不应依赖的东西?还是这是一个文档错误? (从评论这个问题产卵由glglgl这里
解决方案目录包含ExtraDlls和项目目录。在Project.csproj文件中,我们在ExtraDlls中有相对路径的dlls引用。ExtraDlls目录中的Dlls总是可用的。 使用下面的批处理文件发布web项目。但由于以下提到的细节,它失败了。 已尝试更改批处理文件中的根目录。i、 e.当根目录设置为包含MSBuild的根目录时。exe,还是同样的问题。 设置用$(SolutionDir)
本文向大家介绍Linux 相对路径和绝对路径的使用,包括了Linux 相对路径和绝对路径的使用的使用技巧和注意事项,需要的朋友参考一下 01. 概述 绝对路径和相对路径在shell环境中经常遇到,各有用处。有时候相对路径比较方便,有时候绝对路径比较方便。 02. 绝对路径(Absolute Pathname) 绝对路径必定由**/**开头 绝对路径是为档案/文件的所在位置做指向 在任何时候,都可以