getFilesDir()和getFileAbsolutePath()之间有什么区别

时间:2015-09-24 00:51:41

标签: android

当我使用其中任何一个时,我得到相同的结果。只是使用getFileAbsolutePath,我使用文件对象。

Log.v("getFilesDir", "" + getFilesDir().toString());
file = getFilesDir();
Log.v("file.getAbsolutePath",""+file.getAbsolutePath());

结果:

  

V / getFilesDir:/data/data/com.kingbell.interprocesscommunication_simple/files

     

V / file.getAbsolutePath:/data/data/com.kingbell.interprocesscommunication_simple/files

2 个答案:

答案 0 :(得分:0)

如android文档中所述。

<强> getFilesDir()

返回文件系统上目录的绝对路径,其中存储使用openFileOutput(String,int)创建的文件。

这意味着它返回一个文件对象,一个文件可以代表文件或目录,在这种情况下是一个目录。你可以通过调用 isDirectory()方法来检查它。

<强> getAbsolutePath()

返回此文件的绝对路径。

这是此文件的路径,但请记住,目录使用相同的文件对象表示,就像真实文件一样。您可以通过查看 isDirectory() isFile()方法来验证它。

所以,在你的情况下,他们指向同一个地方。

您调用了getFilesDir(),因此您的上下文为您提供了File类实例中表示的目录。在该文件对象中,您调用getAbsolutePath(),因此它们代表相同的东西,因为这是一个实际的目录。

清除?

答案 1 :(得分:0)

使用源代码可能会更清楚。

getAbsolutePath()

package java.io.file

public class File {

   public String  getAbsolutePath() {

         return fs.resolve(this);
   }
}

和getFilesDir()

package android.content

public abstract class Context {

public abstract File getFilesDir();

}

并且对于特定的Context(通常是一个活动),getFilesDir()调用的返回值是固定的并且应该始终相同,它会告诉您可以用来保存文件的位置。

同时,您可以在任何File对象上调用getAbsolutePath()来获取完整的文件路径,可以是您创建的文件,也可以是发送给您的URI中携带的文件。

这就是为什么这两个电话都在不同的包中。

希望解释有所帮助。