问题
A simple question, relating to the default 'home' directory when an app writes to the internal memory. By default, any files created are placed by the OS (2.2) in:
/data/data/your.package/files
When reading in files, the same default is used, when keeping in proper context via openFileInput()
, openFileOutput()
. But if I need to check file existence, for instance, using the File class, I need to specify the whole path in the constructor.
I see there are Environment.getDataDirectory()
(returns /data
), Environment.getRootDirectory()
(returns /system
), etc, but nothing related to getting the app's 'home' directory.
It's not a huge deal, but I'd rather not hard-code the full path into my App for File to use (say the package name changes, say the path changes in a future OS release) if there is some way to reference the app's 'home' directory programmatically.
回答1:
Of course, never fails. Found the solution about a minute after posting the above question... solution for those that may have had the same issue:
ContextWrapper.getFilesDir()
Found here.
回答2:
You can try Context.getApplicationInfo().dataDir
if you want the package's persistent data folder.
getFilesDir()
returns a subroot of this.
回答3:
To get the path of file in application package;
ContextWrapper c = new ContextWrapper(this);
Toast.makeText(this, c.getFilesDir().getPath(), Toast.LENGTH_LONG).show();
来源:https://stackoverflow.com/questions/4739374/android-get-applications-home-data-directory