Java 用 \ 分割目标路径
Java split target path with \
我想控制我的文件在哪个文件夹中。
我使用特定的文件夹结构:
- 主文件夹
- 正在处理子文件夹
- 已处理子文件夹
为了编写我的单元测试,我想将测试文件夹放在提供以下文件夹结构的目标中
target\test-folder\
这是主文件夹
target\test-folder\processing\
这是子文件夹处理
target\test-folder\processed
这是已处理的子文件夹
我想打印出某个文件在哪个文件夹中,我想做的是:
String[] directories = PATH.split("\"");
System.out.println(directories[directories.length - 2]);
当我调试时,我发现我的数组目录只包含 1 个项目,以及整个路径,所以我的拆分可能是错误的。
我应该输入什么作为 split
值?
首先,您使用反斜杠作为转义字符,而不是您想要的。您应该使用参数 "\"
拆分,但是我建议您使用 FileSystems.getDefault().getSeparator()
而不是反斜杠,因此它可能 运行 在 linux 或任何其他系统上(甚至可能在人们使用 ^
作为路径分隔符的一些神奇之地)。不幸的是,在 Windows 它 returns \
(这是转义字符)所以你必须使用 Pattern.quote(String)
引用它
代码应如下所示:
String[] directories = PATH.split(Pattern.quote(FileSystems.getDefault().getSeparator()));
您应该使用内置的 类 而不是拆分字符串,例如 Path
。访问路径的各个元素的人为示例:
Path p = Paths.get("target/test-folder/processed");
for (Path element : p) System.out.println(element); //loop over all elements
System.out.println(p.getName(2)); //access a specific element
输出:
target
test-folder
processed
processed
我想控制我的文件在哪个文件夹中。
我使用特定的文件夹结构:
- 主文件夹
- 正在处理子文件夹
- 已处理子文件夹
为了编写我的单元测试,我想将测试文件夹放在提供以下文件夹结构的目标中
target\test-folder\
这是主文件夹
target\test-folder\processing\
这是子文件夹处理
target\test-folder\processed
这是已处理的子文件夹
我想打印出某个文件在哪个文件夹中,我想做的是:
String[] directories = PATH.split("\"");
System.out.println(directories[directories.length - 2]);
当我调试时,我发现我的数组目录只包含 1 个项目,以及整个路径,所以我的拆分可能是错误的。
我应该输入什么作为 split
值?
首先,您使用反斜杠作为转义字符,而不是您想要的。您应该使用参数 "\"
拆分,但是我建议您使用 FileSystems.getDefault().getSeparator()
而不是反斜杠,因此它可能 运行 在 linux 或任何其他系统上(甚至可能在人们使用 ^
作为路径分隔符的一些神奇之地)。不幸的是,在 Windows 它 returns \
(这是转义字符)所以你必须使用 Pattern.quote(String)
代码应如下所示:
String[] directories = PATH.split(Pattern.quote(FileSystems.getDefault().getSeparator()));
您应该使用内置的 类 而不是拆分字符串,例如 Path
。访问路径的各个元素的人为示例:
Path p = Paths.get("target/test-folder/processed");
for (Path element : p) System.out.println(element); //loop over all elements
System.out.println(p.getName(2)); //access a specific element
输出:
target
test-folder
processed
processed