簡體   English   中英

如何將文件寫入外部存儲(SD卡)

[英]How to write files to external storage (sdcard)

我知道這可能已被多次回答,我已經搜索過,但我無法解決我的問題。 每次我嘗試寫入SD卡時,它似乎都會進入內部存儲。 我的代碼行很簡單

File root = android.os.Environment.getExternalStorageDirectory(); 
File dir = new File (root.getAbsolutePath() +"/mydir");
dir.mkdirs();

當我轉到“我的文件”時,該目錄始終顯示在/ storage / emulated / 0中,而不是顯示在SD卡上。 我擁有清單中設置的所有權限。 我有什么簡單的東西嗎?

PS我的設備是注3.我可以手動將文件復制到SD卡。

如何將文件寫入外部存儲(SD卡)

在大多數Android設備上,外部存儲不是“sdcard”。

當我轉到“我的文件”時,該目錄始終顯示在/ storage / emulated / 0中,而不是顯示在SD卡上

這是因為/storage/emulated/0是外部存儲。

引用文檔

每個Android兼容設備都支持可用於保存文件的共享“外部存儲”。 這可以是可移動存儲介質(例如SD卡)或內部(不可移動)存儲。

Android SDK幾乎不支持其他存儲位置,例如SD卡。 Android 4.4有一點,如同一文檔頁面所述:

有時,已經分配內部存儲器分區以用作外部存儲器的設備也可以提供SD卡插槽。 當這樣的設備運行Android 4.3及更低版本時,getExternalFilesDir()方法僅提供對內部分區的訪問,並且您的應用程序無法讀取或寫入SD卡。 但是,從Android 4.4開始,您可以通過調用getExternalFilesDirs()來訪問這兩個位置,它返回一個包含每個位置條目的File數組。 陣列中的第一個條目被視為主要外部存儲,您應該使用該位置,除非它已滿或不可用。 如果您想同時訪問兩個可能的位置,同時也支持Android 4.3及更低版本,請使用支持庫的靜態方法ContextCompat.getExternalFilesDirs()。 這也會返回一個File數組,但在Android 4.3及更低版本中只包含一個條目。

在這里,我發布了用於查找sdcard路徑的代碼(在問題的正文中)

如何正確獲取外部SD卡路徑?

它應該解決你的問題。 “外部”存儲並不總是您的SD卡,因為許多Android設備將內部存儲器視為外部分區。 真實外部存儲(您的SD卡)的路徑由設備的構造函數設置,並且沒有用於獲取它的標准API。

打印

dir.toString()

以上,看看你得到了什么。 然后將其與之比較

File dir = new File(getExternalFilesDir(null) +  File.separator + "mydir");

如果你喜歡第二種選擇,你應該得到(我做了)/storage/sdcard0/data/your.package.name/files/mydir,你上面的目錄是mydir,而不是My Files?

你需要手動找到外置SD卡,這取決於手機。

請參閱本教程 ,其中有一個示例,說明如何測試SD卡的不同路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM