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个子文件夹。但是谢谢你的回答。