Java IllegalArgumentException:调用现有文件夹时,URI不是分层的

Java IllegalArgumentException:调用现有文件夹时,URI不是分层的,java,uri,java.nio.file,Java,Uri,Java.nio.file,我正在这样做: private boolean createCopy(String targetDirectory, String[] dataSet, String fileName, boolean overwrite) throws IOException, URISyntaxException { fileName = "file:" + fileName.replace(" ","%20"); URI uri = new URI("file:" + targetDire

我正在这样做:

private boolean createCopy(String targetDirectory, String[] dataSet, String fileName, boolean overwrite) throws IOException, URISyntaxException
{
    fileName = "file:" + fileName.replace(" ","%20");
    URI uri = new URI("file:" + targetDirectory);
    Path dPath = Paths.get(uri);
    //code
 }
我得到一个例外:

Exception in thread "main" java.lang.IllegalArgumentException: URI is not hierarchical
at sun.nio.fs.WindowsUriSupport.fromUri(WindowsUriSupport.java:122)
at sun.nio.fs.WindowsFileSystemProvider.getPath(WindowsFileSystemProvider.java:92)
at java.nio.file.Paths.get(Paths.java:138)
...

Path dPath = Paths.get(uri);
线路。有人知道为什么吗
targetDirectory
只是一个简单的文件夹,既不是
JAR
也不是
WAR
文件;如果我废除了

URI uri = new URI("file:" + targetDirectory);
我只是

Exception in thread "main" java.nio.file.FileSystemNotFoundException: Provider "DRIVE_LETTER" not installed
at java.nio.file.Paths.get(Paths.java:147)
...
“驱动器号”
最后是类似于“C”或“D”或“E”的东西。它是
targetDirectory
所在的驱动器

编辑:

public static void main(String... args)
{
    Path path = null;
    try
    {
        Paths.get(new URI("file:E://HTML%20Processor//test//copies//"));
    }
    catch (URISyntaxException e)
    {
        e.printStackTrace();
    }
}
抛出完全相同的异常,因为您想知道确切的调用


编辑:将文件放在任何其他驱动器上都没有区别;USB或SATA驱动器也没什么区别。

它应该是file://而不是file:

那么,您能为我们提供这种方法的调用吗?您能准确地告诉我们您的目标目录路径是什么吗。如果可能,还应提供完整的方法。以及传递给它的值。java.nio.file.FileSystemNotFoundException表示驱动器不可访问。您是否在运行此代码的计算机上安装了指定的驱动器路径。提供了一个引发相同错误的简单方法!驱动器位置可以像往常一样访问;我可以移动文件,复制,删除。系统驱动器与否也没有区别。实际上,这会导致其他错误。文件是我的解决方案。