Android在内部存储器中创build文件夹
有没有办法/是否允许在Android的内部存储器中创build文件夹。 例如:
- data -- com.test.app (application's main package) ---databases (database files) ---files (private files for application) ---shared_prefs (shared preferences) ---users (folder which I want to create)
我可以在内部存储器中创buildusers
文件夹吗?
我用这个在内存中创build文件夹/文件:
File mydir = context.getDir("mydir", Context.MODE_PRIVATE); //Creating an internal dir; File fileWithinMyDir = new File(mydir, "myfile"); //Getting a file within the dir. FileOutputStream out = new FileOutputStream(fileWithinMyDir); //Use the stream as usual to write into the file.
如果您希望您的文件易于用户访问,则不应使用此文件
File newdir= context.getDir("DirName", Context.MODE_PRIVATE); //Don't do if (!newdir.exists()) newdir.mkdirs();
INSTEAD,这样做:
要在手机主存储器(通常是内部存储器)上创build目录,您应该使用以下代码。 请注意, Environment.getExternalStorageDirectory()中的ExternalStorage不一定是指sdcard,它将返回电话主存储器
File mediaStorageDir = new File(Environment.getExternalStorageDirectory(), "MyDirName"); if (!mediaStorageDir.exists()) { if (!mediaStorageDir.mkdirs()) { Log.d("App", "failed to create directory"); } }
使用此代码创build的目录将很容易地被电话用户看到。 另一种方法(首先提到)在位置(/data/data/package.name/app_MyDirName)创build目录,因此正常的电话用户将无法轻松访问它,所以你不应该使用它来存储video/照片等。
您将需要AndroidManifest.xml中的权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
context.getDir(“mydir”,…); 这会创build你的.package / app_mydir /
/** Retrieve or creates <b>path</b>structure inside in your /data/data/you.app.package/ * @param path "dir1/dir2/dir3" * @return */ private File getChildrenFolder(String path) { File dir = context.getFilesDir(); List<String> dirs = new ArrayList<String>(Arrays.<String>asList(path.split("/"))); for(int i = 0; i < dirs.size(); ++i) { dir = new File(dir, dirs.get(i)); //Getting a file within the dir. if(!dir.exists()) { dir.mkdir(); } } return dir; }