如何在Java中拆分文件系统路径?

时间:2012-04-19 12:42:54

标签: java string path

如果我在一个类中有一个字符串变量

MainActivity.selectedFilePath

,其值如此

/sdcard/images/mr.32.png

我想在某个地方只打印到没有文件名的文件夹的路径

/sdcard/images/

12 个答案:

答案 0 :(得分:12)

你可以这样做:

File theFile = new File("/sdcard/images/mr.32.png");
String parent = theFile.getParent();

或(少推荐)

String path = "/sdcard/images/mr.32.png";
String parent = path.replaceAll("^(.*)/.*?$","$1");

See it

答案 1 :(得分:6)

    String string = "/sdcard/images/mr.32.png";
    int lastSlash = string.lastIndexOf("/");
    String result = string.substring(0, lastSlash);
    System.out.println(result);

答案 2 :(得分:2)

new File(MainActivity.selectedFilePath).getParent()。getAbsolutePath()

答案 3 :(得分:2)

使用该路径创建File对象,然后使用File Class中的getPath方法。

答案 4 :(得分:2)

String realPath = "/sdcard/images/mr.32.png";
String myPath = realPath.substring(0, realPath.lastIndexOf("/") + 1);

答案 5 :(得分:1)

您可以使用String.lastIndexOf(int ch);来为您提供角色ch的最后一次出现

答案 6 :(得分:1)

试试这个:

File file = new File("path");

parentPath = file.getParent();

parentDir = file.getParentFile();

答案 7 :(得分:1)

  • 文件

如果文件夹中实际存在文件,您可以将文件对象中的字符串包装起来并调用File.getParent()

  • String.split()

如果文件不存在,可以使用String.split()函数将String拆分为“/”作为分隔符。然后,您可以删除数组中的最后一个String并重建它。这种方法虽然很脏。

  • 正则表达式

您可以使用正则表达式将最后一个/之后的部分替换为“”。

答案 8 :(得分:1)

final String dir = System.getProperty("user.dir");
String[] array = dir.split("[\\\\/]",-1) ;
String arrval="";

   for (int i=0 ;i<array.length;i++)
      {
        arrval=arrval+array[i];

      }
   System.out.println(arrval);

答案 9 :(得分:0)

查看Apache Commons IO库中的Apache FileNameUtils,特别是getFullPath()

答案 10 :(得分:0)

这是解决方案 -

 String selectedFilePath= "/sdcard/images/mr.32.png";
 selectedFilePath=selectedFilePath.substring(0,selectedFilePath.lastIndexOf("/"));
System.out.println(selectedFilePath);

答案 11 :(得分:0)

Java 11:

String folderOnly = Path.of(MainActivity.selectedFilePath).getParent().toString();