Java使用\
我想控制我的文件所在的文件夹 我使用特定的文件夹结构:Java使用\,java,string,split,directory,Java,String,Split,Directory,我想控制我的文件所在的文件夹 我使用特定的文件夹结构: 主文件夹 处理子文件夹 已处理的子文件夹 为了编写我的单元测试,我想把测试文件夹放在目标中,它给出了以下文件夹结构 目标\测试文件夹\ 这是主文件夹 目标\测试文件夹\处理\ 这是正在处理的子文件夹 目标\测试文件夹\已处理 这是已处理的子文件夹 我想打印出某个文件在哪个文件夹中,我想做的是: String[] directories = PATH.split("\""); System.out.println(directories[di
String[] directories = PATH.split("\"");
System.out.println(directories[directories.length - 2]);
当我调试时,我看到我的数组目录只包含1项,并且包含整个路径,所以我的拆分可能是错误的
我应该把什么作为
split
value?首先,你使用反斜杠作为转义字符,而不是你想要的。您应该使用参数“\\”
进行拆分,但是我建议您使用FileSystems.getDefault().getSeparator()
而不是反斜杠,这样它可能会在linux或任何其他系统上运行(甚至可能是在一些人们使用^
作为路径分隔符的魔域中)。不幸的是,在Windows中,它返回\
(这是转义字符),因此您必须使用模式引用它。引用(字符串)
代码应该如下所示:
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
哪些产出:
目标测试文件夹
已处理
加工
可能应该使用类型
路径
或文件
。我同意@Raedwald。您不应该进行字符串操作,而应该使用File对象,找出父对象,等等,因此forthOk似乎是一个很好的解决方案。这会引发:java.util.regex.PatternSyntaxException:索引1附近出现意外内部错误\Edited my answer,请再试一次,它会工作。谢谢你的努力,你值得表扬!一个小细节,这需要是动态的。因此,它需要在文件系统的每个文件夹中使用,其中包含2个子文件夹。但是谢谢你的回答。