当我使用其中任何一个时,我得到相同的结果。只是使用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
答案 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中携带的文件。
这就是为什么这两个电话都在不同的包中。
希望解释有所帮助。