簡體   English   中英

無法在 sdcard android 上寫入文件

[英]Unable to write files on sdcard android

我有一個將備份文件保存在 SD 卡上的應用程序。 它在 HTC Nexus One 和其他 android 手機上運行良好,但在某些手機上它不起作用(讀取或寫入)。

在清單中我設置了這個:

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

例如(當我設置錄制文件的路徑時):

OutputStream output = new FileOutputStream(Environment.getExternalStorageDirectory()
                    + "/mydata.dat");
//Writing file...(It doesn't work)

如何獲得 SD 卡的正確路徑以正確處理文件?

通常,Android 不允許您將文件直接寫入 SDCard 的根目錄。 您必須在 SDCard 根目錄中創建一個文件夾,然后將文件寫入新創建的文件夾中。

試試這個,它應該可以工作。

當你說“它不起作用”時......究竟會發生什么? 你的意思是程序運行沒有投訴,但文件沒有被寫入 sdcard,還是你的意思是別的?

如果文件根本沒有到達那里,那不是你的錯,而是手機制造商的錯。 我見過一些設備從 getExternalStorageDirectory() 返回“/mnt/sdcard”,但這並不是真正的 sdcard 路徑,例如,在至少一台摩托羅拉設備和三星 Galaxy Tab (7") 上,即使這指向內部存儲,也會返回 /mnt/sdcard。每個設備上的外部存儲是 /mnt/sdcard-ext。

對此,您無能為力——原始設備制造商在對您撒謊。 如果您想要解決方法,您可以閱讀 /proc/mounts 並嘗試找到 sdcard 的實際路徑,但 /mnt/sdcard 也會顯示在那里,並且沒有保證區分真相的方法所有設備。

我有 Sony Xperia tipo dual 和這個:

FILE* pFile = fopen("/mnt/sdcard/mydata.dat","w+");

和這個:

FILE* pFile = fopen("/sdcard/mydata.dat","w+");

兩者都工作正常。 (我是在 Native 中完成的)

暫無
暫無

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

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