Android GetFileDir()和getFileAbsolutePath()之间的区别是什么

Android GetFileDir()和getFileAbsolutePath()之间的区别是什么,android,Android,当我使用它们中的任何一个时,我都会得到相同的结果。只是为了使用getFileAbsolutePath,我使用了一个file对象 Log.v("getFilesDir", "" + getFilesDir().toString()); file = getFilesDir(); Log.v("file.getAbsolutePath",""+file.getAbsolutePath()); 结果: V/getFile

当我使用它们中的任何一个时,我都会得到相同的结果。只是为了使用
getFileAbsolutePath
,我使用了一个file对象

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

V/getFilesDir﹕ /data/data/com.kingbell.interprocesscommunication\u simple/files

V/file.getAbsolutePath﹕/data/data/com.kingbell.interprocesscommunication\u simple/files


正如android文档中所解释的那样

getFilesDir()

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

这意味着它返回一个文件对象,一个文件可以表示文件或目录,在本例中是一个目录。您可以通过调用isDirectory()方法来检查它

getAbsolutePath()

返回此文件的绝对路径

这是该文件的路径,但请记住,目录是用与实际文件相同的文件对象表示的。您可以通过检查isDirectory()isFile()方法来验证它

所以,在你的例子中,它们指向同一个地方

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


清楚吗?

也许源代码会更清楚

getAbsolutePath()

和getFilesDir()

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

同时,您可以对任何文件对象调用getAbsolutePath(),以获取完整的文件路径,可以是您创建的文件,也可以是发送给您的URI中包含的文件

这就是为什么这两个调用在不同的包中


希望解释有帮助

它们都是您的
文件的绝对路径
,一点区别都没有。我理解isDirectory()和isFile()方法的解释,但我仍然不理解getAbsolutePath()和getFileDirectory()之间的区别。您能举个例子解释一下吗???根据我的理解,GetFileDirectory()-返回使用OpenFileOutput()写入文件的目录的路径,getAbsolutePath()提供完整路径,对吗?您有什么疑问?它们都返回相同的路径,那么它们之间的区别是什么?GetFileDirectory()返回目录的路径,getAbsolutePath()返回目录的路径,因此我们不确定文件对象是否包含文件或目录,因此我们使用isDirectory或isFile进行检查。我说得对吗?是的。getFilesDir返回目录。。但是没有类来表示仅目录文件类。因此,类文件可以表示文件夹或文件。因此,一旦调用file=getFilesDir(),您将收到一个文件对象,它是指向/data/data/com.kingbell.interprocesscommunication\u simple/files.Got的目录表示形式。谢谢你抽出时间。
package java.io.file

public class File {

   public String  getAbsolutePath() {

         return fs.resolve(this);
   }
}
package android.content

public abstract class Context {

public abstract File getFilesDir();

}