2014-02-28 39 views
3

我知道這個問題之前曾被問過很多次,但無論如何我無法弄清楚。 我可以寫一個文本文件到一個目錄上的SD卡(安卓4.0),但沒有辦法讀回再次,使用此代碼:使用純Javascript在Android上使用mosync/phonegap讀取SD卡上的文件

function get_file() { 
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, getFilesystem, fail); 
} 
function getFilesystem(fs) { 
alert("getFilesystem -> backup.txt"); // OK ! 
// alert("filesystem.name: "+fileSystem.name); // = persistent 
// alert("filesystem.root.name: "+fileSystem.root.name); // = long number 
    // 
fs.root.getFile("../../../../../../sdcard/test/backup.txt", {create: false, exclusive: false}, 
    function(fileEntry) { 
     alert(fileEntry.fullPath); // shows that my path is appended to "data/.." 
     fileEntry.file(function(file) { 
     var reader = new FileReader(); 
     reader.onloadend = function(evt) { 
     alert(+evt.target.result); // NOT SHOWING !   
      }; 
     reader.readAsText(file); 
    }, fail); 
}, fail); 
} 

我寫了使用作家功能到文件目錄SD卡/測試使用這個序列../ - 這是一個醜陋的代碼,但工作!

fs.root.getFile不能以同樣的方式工作 - 它返回的fullPath信息顯示我給出的路徑是APPENDED到「/data/data/com.appname/files」,但不能代替它!

onloadend函數顯然不工作,因爲我從來沒有收到警報消息,我也沒有收到錯誤消息。 更改爲「file:/// sdcard/test」或「sdcard/test」的路徑也不起作用。

任何幫助,高度讚賞 - 先謝謝您! 克里斯

回答

0

請參閱PHONEGAP DOCUMENT

從此你會得到工作例如,從SD卡獲取的文件。 如果您在下載文件時遇到問題,請參考LINK

我認爲在「/sdcard/backup.txt」文件中試圖只使用「backup.txt」。

它似乎工作正常。

PhoneGap負責處理路徑的細節,也可以處理目錄。

+0

那麼,這就是我約2周後嘗試,你看到我的代碼實際上是phonegap文件。如果我僅使用「backup.txt」作爲路徑,程序正在應用程序「文件」目錄中查找此文件。我的問題仍然是,如何訪問我自己選擇的SDCARD上的任何目錄中的文件? Phonegap不會照顧它,如果我不能將它寫入代碼,它如何知道我想使用哪個目錄?請給出具體的例子來幫助。 – Chris

0

因此,我終於明白了: 要訪問目錄(在Android 4.0上,Samsung Note 8),我必須逐字從/data/data/com.app-name/files/apps/ (隨機號碼)/回到SD卡通過選擇:

fs.root.getFile("../../../../../../sdcard/test/backup.txt", ... 

在mosync重新加載客戶端。

「使用mosync apk編譯」應用程序只需要4次「../」,因爲文件層次結構低於重新加載客戶端。在任何情況下都必須檢查文件資源管理器(需要root訪問權限)。 不同的是,當你用phonegap在雲中編譯 - 那麼的確是根路徑是SD卡!據我所知,你無法進入數據目錄。

此路徑適用於mosync中的寫入和讀取 - 我的錯誤是我在文本文件中有換行符「\ n」。在這種情況下,我可以編寫它,但讀者停止沒有錯誤信息。

希望能幫助別人!

Chris

+0

你好,克里斯,你可以發佈代碼嗎?我嘗試複製/粘貼你的第一個代碼在我的apache cordova項目中,這是行不通的。我搜索了兩個星期文件cordova函數的工作原理:/兩個帖子在這裏。 – JoDiii