2011-12-05 61 views

回答

11

它在@ $$中有點痛苦,但可行。開始使用此代碼:

document.addEventListener("deviceready", onDeviceReady, false); 

// PhoneGap is ready 
// 
function onDeviceReady() { 
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail); 
} 

function onFileSystemSuccess(fileSystem) { 
    fileSystem.root.getDirectory("Music", {create: false, exclusive: false}, getDirSuccess, fail); 
} 

function getDirSuccess(dirEntry) { 
    // Get a directory reader 
    var directoryReader = dirEntry.createReader(); 

    // Get a list of all the entries in the directory 
    directoryReader.readEntries(readerSuccess,fail); 
} 

function readerSuccess(entries) { 
    var i; 
    for (i=0; i<entries.length; i++) { 
     // Assuming everything in the Music directory is an mp3, go nuts 
     // otherwise check entries[i].name to see if it ends with .mp3 
    } 
} 

我正在寫一個IDE之外的所有本示例代碼所以可能會有錯誤,但應該讓你去。

+0

乾杯您的幫助西蒙,雖然它不會走過去的onFileSystemSuccess(文件系統)功能對我來說... – Dancer

+0

可能是因爲在fileSystem.root下沒有Music文件夾。確保你在正確的根目錄下,並且你有一個音樂文件夾。你也可以給它「」來訪問沒有任何文件夾的根目錄。他的代碼在iPhone(ios)上爲我工作。 – c0d3Junk13

2

Paul,你添加了一個fail()函數嗎?這在Simon的示例代碼中將是必需的。該api docs example有:

function fail(evt) { 
    console.log(evt.target.error.code); 
} 
2

您還可以節省一個步驟西蒙的代碼,如果你只是想一個概念證明,因爲fileSystem.root已經是一個dirEntry(從而節省您不必使用的潛在馬車一步一個目錄名稱,如「音樂」可能會或可能不會在那裏):

function onFileSystemSuccess(fileSystem) { 
    var directoryReader = fileSystem.root.createReader(); 

    // Get a list of all the entries in the directory 
    directoryReader.readEntries(readerSuccess,fail); 
} 

function readerSuccess(entries) { 
    var i;....... 

它適合我。

但是,我得到的是應用程序的根目錄的內容,顯然,我的應用程序被稱爲be.qan.blaActivity,所以,如果我問它fileSystem.root.name它告訴我「be.qan」和fileSystem.root.path未定義。因此,我的問題在於:我如何才能擺脫這個沙盒,如果那真的是我所坐的,我可以訪問sd_card目錄或文件系統的其他部分(因爲iOS甚至沒有外部的存儲)?

我通過readerSuccess中的文件名獲得的名稱是諸如「AsyncFileManager」等搜索時甚至不顯示的「databases」,「app_database」,「cache」和「lib」我強烈認爲它們是Cordova爲應用創建的虛擬文件系統的一部分。可能還有很多我錯過了,人們比我更直接地認識我,但這就是我迄今爲止所猜測的。

+1

現在,在回答自己的問題時,就瀏覽設備的整個文件系統而言,我現在嘗試使用'window.resolveLocalFileSystemURI()'而不是'window.requestFileSystem',它使整個過程變得更加簡單。使用'window.resolveLocalFileSystemURI(「file:///」),函數(dirEntry){var directory directory = dirEntry.createReader(); directoryReader.readEntries(readerSuccess,fail); },失敗);'讓你直接進入根目錄,你可以從那裏取得它。 – yogibimbi

0

您好我使用此代碼和它的作品對我..可以試試

$('#recordingList').on('pagecreate', function(event) { 
    generateRecordingList(); 
}); 

function generateRecordingList(){ 
    //request for the file system 
    window.resolveLocalFileSystemURI("file:///sdcard/rem", onFileSystemSuccess, onError); 
} 

function onFileSystemSuccess(fileSystem){ 
    alert("FileSystem success : " + fileSystem.name); 

} 

function onError(error){ 
    alert(error.target.error.code); 
}