如果我在一个类中有一个字符串变量
MainActivity.selectedFilePath
,其值如此
/sdcard/images/mr.32.png
我想在某个地方只打印到没有文件名的文件夹的路径
/sdcard/images/
答案 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");
答案 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拆分为“/”作为分隔符。然后,您可以删除数组中的最后一个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();