1

我正在使用一些代码,我希望它的行为取决于文件所在的文件夹名称。我不需要绝对路径,只需要最终文件夹。到目前为止,我所看到的一切都是使用文件中指定的绝对路径。

4

5 回答 5

7

这就是你想要的:

public static String getParentName(File file) {
    if(file == null || file.isDirectory()) {
            return null;
    }
    String parent = file.getParent();
    parent = parent.substring(parent.lastIndexOf("\\") + 1, parent.length());
    return parent;      
}

不幸的是,没有预先提供的方法只返回文件路径中最后一个文件夹的名称,因此您必须进行一些字符串操作才能获取它。

于 2013-09-26T14:23:55.777 回答
2

尝试java.io.File.getParentFile()方法。

String getFileParentName(File file) {
    if (file != null && file.getParentFile() != null) {
        return file.getParentFile().getName();
    }
    return null; // no parent for file
}
于 2013-09-26T14:13:51.000 回答
2

我认为java.io.File.getParent()是您正在寻找的:

import java.io.File;

public class Demo {

   public static void main(String[] args) {
      File f = null;
      String parent="not found";
      f = new File("/tmp/test.txt");
      parent = f.getParent();
      System.out.print("parent name: "+v);
   }

}
于 2013-09-26T14:16:34.657 回答
1

String File.getParent()

还有

File File.getParentFile()

我不知道绝对或相对的回报是什么,但如果它是绝对的,你总能找到“\”字符的最后一个(或倒数第二个,取决于)实例(记得像这样转义它“\ \") 表示最低文件夹级别在哪里。

例如,如果函数返回:

“C:\Users\YourName”是您最后一次出现“\”的位置,之后的所有字符都是您想要的文件夹

“C:\Users\YourName\”是您获得倒数第二次出现“\”的位置,并且它与最后一个“\”之间的所有字符都是您要查找的文件夹。

Java 文件 API: http ://docs.oracle.com/javase/7/docs/api/java/io/File.html

于 2013-09-26T14:15:48.580 回答
0
String path = "/abc/def"; // path to the directory  
try
{
    File folder = new File(path);
    File[] listOfFiles = folder.listFiles();

    for (File file : listOfFiles) 
    {
      if(file.isDirectory())
      {
        switch(file.getName)
        {
             case "folder1" : //do something
              break
             case "folder2" : //do something else 
              break
        }  
      }
    }
}   
catch(Exception e) 
{
      System.out.println("Directory not Found"); 
}
于 2013-09-26T14:34:42.770 回答