在Java(Android)中从文件路径获取目录。

34

有没有一种函数可以获取文件路径的目录部分?

因此,从

String a="/root/sdcard/Pictures/img0001.jpg";

你得到了什么

"/root/sdcard/Pictures"
4个回答

69

是的。首先,构造一个表示图像路径的File

File file = new File(a);

如果您从相对路径开始:

file = new File(file.getAbsolutePath());

然后,获取父级目录

String dir = file.getParent();

或者,如果您想将该目录作为一个File对象获取,

File dirAsFile = file.getParentFile();

3
如果你使用类似于 File f = new File("file.txt"); 的相对路径,请注意 f.getParent() 将返回 null,而不是父目录。 - yate
如何从文件名中提取路径直到“/root/sdcard/”或“/root/internal/”? - SimpleCoder
@hexafraction 刚刚发布了一个问题 http://stackoverflow.com/questions/38381871/get-root-directory-i-e-external-or-external-sdcard-from-file-path - SimpleCoder

12

3

你也可以使用来自Apache的FilenameUtils。它至少为以下示例C:\dev\project\file.txt提供以下功能:

  • 前缀 - C:\
  • 路径 - dev\project\
  • 完整路径 - C:\dev\project\
  • 名称 - file.txt
  • 基本名称 - file
  • 扩展名 - txt

0

我在经过4天的努力后找到了解决方案,请注意在Android(Java)中给File类提供路径时遵循以下几点:

  1. 使用内部存储路径字符串path="/storage/sdcard0/myfile.txt";
  2. path="/storage/sdcard1/myfile.txt";
  3. 在清单文件中声明权限。

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

  4. 首先确认文件长度。
  5. 检查ES文件浏览器中sdcard0和sdcard1的路径是否相同,否则......

例如:

File file=new File(path);
long=file.length();//in Bytes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接