gpt4 book ai didi

java - 为什么在这种情况下 subpath() 会抛出 IllegalArgumentException ?

转载 作者:行者123 更新时间:2023-12-01 21:55:57 30 4
gpt4 key购买 nike

我正在编写一个用于文件夹同步的应用程序。我有两个目录结构,源和目标,当递归另一个目录结构时,我需要以某种方式引用另一个目录结构中的等效文件/文件夹。此方法尝试通过首先提取用户先前选择并存储为全局变量的根文件夹来提取源中文件的子位置,然后将其附加到目标的根文件夹(同样是用户)来实现此目的全局选择并存储。为什么这不起作用?这些论点看起来不错;从 sourcePath 的长度到最后一个元素的索引。

private Path getEquivalentFileInTarget(Path pathOfSource) {
Path sourceSublocation = pathOfSource.subpath(sourcePath.getNameCount(), -1);
return targetPath.resolve(sourceSublocation);
}

错误日志:

Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1771)
... 48 more
Caused by: java.lang.IllegalArgumentException
at sun.nio.fs.WindowsPath.subpath(WindowsPath.java:634)
at sun.nio.fs.WindowsPath.subpath(WindowsPath.java:44)
at sample.FolderSyncerMainWindowController.getEquivalentFileInTarget(FolderSyncerMainWindowController.java:133)
at sample.FolderSyncerMainWindowController.putInTreeViewCompare(FolderSyncerMainWindowController.java:120)
at sample.FolderSyncerMainWindowController.handleCompareButton(FolderSyncerMainWindowController.java:92)
... 58 more

最佳答案

您滥用了Path

现在,我不知道您的不同Path是否是从不同的文件系统提供商发出的,但是如果不是您可以这样做:

final Path subpath = sourceRoot.relativize(fullPathInSource);
final Path fullPathInTarget = targetRoot.resolve(subpath);

如果 subpath 是空路径(这就是 sourceRoot.relativize(sourceRoot) 将返回的内容),这也将起作用。

关于java - 为什么在这种情况下 subpath() 会抛出 IllegalArgumentException ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34269731/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com