2017-07-16 76 views
0

目前,我使用下面的方法在android外部存儲器中創建路徑。如何在Android存儲器中編寫/讀取文件夾/文件

public void createPath() { 
    String path = Environment.getExternalStorageDirectory().getPath()+"/myFolder/"; 
    boolean exists = (new File(path)).exists(); 
    if (!exists) { 
     new File(path).mkdirs(); 
    } 
} 

據我所知getExternalStorageDirectory()並不專指外部存儲。因此,此方法將在用戶首選存儲(通常是內部存儲)中創建myFolder

現在我有一個問題:

如果默認存儲(用戶首選存儲)已被設置爲SD Card,它不是可讀/寫,會發生什麼?處理這種情況的最佳方法是什麼?

換句話說,我該如何安全地創建這個文件夾?(內部或外部無關緊要)。

回答

0

在內部存儲中創建文件夾是安全的,無需訪問。

//Get free Size internal memory 
File path = Environment.getDataDirectory(); 
StatFs stat = new StatFs(path.getPath()); 
long blockSize = stat.getBlockSize(); 
long availableBlocks = stat.getAvailableBlocks(); 
long freeSizeInternalMemoryMB = ((availableBlocks * blockSize)/1024)/1024; 

//2M available 
if (freeSizeInternalMemoryMB > 2) { 
    //code for create and copy file 
}else{ 
    //show error for low storage 
} 
+0

感謝您的答覆外部存儲,但目錄應該是方便(用戶) –

0

據我瞭解getExternalStorageDirectory()不專指外部存儲。

是的,它的確如此,Android SDK指的是external storage

因此,此方法將在用戶首選存儲(通常是內部存儲)中創建myFolder。

不,Android SDK指的是internal storage是別的。

如果默認存儲(用戶首選存儲)已設置爲SD卡並且不可讀/可寫,會發生什麼情況?

Android本身並沒有「用戶首選存儲」的概念,除非我誤解了你的描述。

如何安全地創建該文件夾?

你的代碼似乎很好。

只有很小比例的設備(我猜:〜0.1%),其中外部存儲位於可移動媒體上。這是Android 1.x/2.x的主要模式,但這些設備已經不再使用了,大多數新設備都具有內置和外置存儲器,並且都具有板載閃存。如果用戶彈出可移動媒體,則無法訪問外部存儲。在Environment上有獲取外部存儲狀態的方法。但是,您無法在用戶可以訪問的位置編寫文件。您的選擇是:

  • 存儲在內部存儲設備中的文件,然後將它們遷移到外部存儲在稍後的時間,當媒體再次可用

  • 不存儲任何東西,要求用戶請再次可用

+0

在這個[圖片](http://www.symphonyrecords.ir/storage.jpg),「用戶首選/默認存儲「已被設置爲** SD卡**,對不對?現在我要問的是,如果此SDCard不可寫,會發生什麼?那麼我的文件夾將不會被創建,對吧?現在我所要問的是在這種情況下我該怎麼做。我的應用程序的一半取決於此文件夾。 –

+0

@ S.R:「」用戶首選/默認存儲「已被設置爲SD卡,對不對?」 - 這不是標準Android的東西,我不知道它是什麼意思。 「現在我要問的是,如果SDCard不可寫入,會發生什麼?」 - 在十年左右的時間裏,我還沒有看到帶有硬件只讀開關的SD卡。我不知道Android支持不可寫入的SD卡。 「那麼我的文件夾將不會被創建,對吧?」 - 我懷疑這個星球上的任何人都可以回答這個問題。 「現在我所問的是在這種情況下我該怎麼做」 - 我想,告訴用戶修理他們的設備。 – CommonsWare

相關問題