2012-08-02 297 views
22

我想在我的應用程序的內部存儲器中保存一張圖片,以使其保密。所以我做了一點研究,看到了兩種方法來獲取目錄。Android上的getDir和getFilesDir有什麼區別?

1.採用getDir

File dir = getDir(Environment.DIRECTORY_PICTURES, Context.MODE_PRIVATE); 

2.具有getFilesDir

File dir = getFilesDir(); 

哪家最好?哪個返回內部存儲中的位置?

寫文件的方式取決於你得到你的目錄的方式嗎?由於在Android中編寫文件的方式有很多,所以我有點失落。

回答

28

getFilesDir()返回一個File對象到一個專用於您的應用程序的目錄。當您使用openFileOutput(String, int)時,您編寫的數據將直接存儲在此目錄中,並且任何其他應用程序都無法訪問。它擁有你的應用程序文件。

getDir()使您能夠在內部存儲器中創建任何文件或目錄,根據您創建它的模式,其他應用程序也可以訪問該文件或目錄。 openFileOutput(String, int)將無法​​使用此輸出,因此您將不得不使用其他方式編寫和讀取文件來處理此目錄或文件。這更多地用於創建定製文件,而非用於應用程序的文件。

+0

謝謝!而且'File dir = getDir(Environment.DIRECTORY_PICTURES,Context.MODE_PRIVATE);'會在內部存儲器中得到一個'File'(因爲'MODE_PRIVATE')? – cleroo 2012-08-03 07:46:15

+0

不客氣。 MODE_PRIVATE是getDir的默認常量,它表示您的文件/目錄對於您的應用程序是私有的。 getDir將始終返回/創建一個內部目錄。注意DIRECTORY_PICTURES適用於API 8及更高版本的事實。 – Erol 2012-08-03 16:43:42

+0

@Erol所以我可以得出結論getDir與'MODE_PRIVATE'是一樣的getFilesDir以某種方式...? – 2014-05-02 04:02:25