2011-11-14 111 views
13

有什麼方法/是否允許在Android的內部存儲器中創建文件夾?例如:Android在內部存儲器中創建文件夾

- 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) 

我可以在內部存儲器中創建users文件夾嗎?

+0

[創建內部存儲在應用程序包目錄(可能重複http://stackoverflow.com/questions/7105919/creating-directory-in -application-package-on-internal-storage) –

+0

是的,你絕對可以在內存中製作文件夾 –

回答

34

我用這個創建在內部存儲器中的文件夾/文件:

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. 
+0

似乎從upvotes有幫助的答案..你可以請提及閱讀相同文件的內容,代碼行因爲現在該文件在「mydir」目錄中,所以如何進行讀取。如果目錄中還有其他文件夾,該怎麼辦? 「路徑」是我所關心的。 –

+1

@Gautam M.檢查這個教程是否適合你。謝謝。 http://www.mysamplecode.com/2012/06/android-internal-external-storage.html – JibW

+0

是很好的教程... –

3

context.getDir( 「MYDIR」,...);這將創建your.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; 
} 
6

你不應該使用這個,如果你希望你的文件被訪問過由使用者容易

File newdir= context.getDir("DirName", Context.MODE_PRIVATE); //Don't do 
if (!newdir.exists()) 
    newdir.mkdirs(); 

相反,這樣做:

創建目錄在手機主存儲器(通常是內部存儲器)上,您應該使用以下代碼。請注意,Environment.getExternalStorageDirectory(即ExternalStorage)並不一定是指SD卡,它返回手機主存儲器使用此代碼將是手機用戶可見容易

File mediaStorageDir = new File(Environment.getExternalStorageDirectory(), "MyDirName"); 

if (!mediaStorageDir.exists()) { 
    if (!mediaStorageDir.mkdirs()) { 
     Log.d("App", "failed to create directory"); 
    } 
} 

目錄中創建。另一種方法(首先提到)會在位置(/data/data/package.name/app_MyDirName)中創建目錄,因此普通電話用戶將無法輕鬆訪問它,因此您不應該使用它來存儲視頻/照片等。

您需要的權限,在AndroidManifest.xml

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" /> 
+0

是的,你說得對,getExternalStorageDirectory()是指手機的主存儲器,你怎麼樣在SD卡中創建一個文件夾呢? –

相關問題