java.nio.file.Path:为不同/虚拟文件系统创建路径?

问题描述 投票:0回答:1

我使用

java.nio.file.Path
来修改文件系统中不存在但在 ZIP 文件中的路径。当然,我不能使用这样的
Path
实例来读取和写入文件内容,但这在我的上下文中不是问题,我只需要它,例如致电
getParent()
getFileName()
getNameCount()

通常这很有效,但现在我遇到了一个 ZIP 文件,它使用

|
来表示 ZIP 文件中的某些路径。如果我尝试使用
Paths.get(pathInZip)
解析此类路径,则会产生
java.nio.file.InvalidPathException: Illegal char <|> at index ...

有没有办法告诉

Path
它不是操作系统当前文件系统中的路径,因此它不受例如操作系统文件系统的保留字符?

或者这里使用

java.nio.file.Path
是错误的方法?

java path filesystems
1个回答
0
投票

您应该使用 Zip 文件系统 阅读 zip 文件的内容。然后,您将能够使用一个 Path 来理解 zip 文件中名称中允许包含的所有字符。例如,以下列出了给定 zip 文件的顶级目录的内容:

    try (FileSystem fs = FileSystems.newFileSystem(Path.of(zipfile))) {
        for (Path directory : fs.getRootDirectories()) {
            System.out.println(directory);
            Files.list(directory).forEach(path -> System.out.println("\t" + path));
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.