2014-02-28 3 views
3

이 질문은 여러 번 요청되었지만 어쨌든 알아낼 수는 없습니다.순수한 자바 스크립트로 안드로이드에서 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); 
} 

내가 작가 기능에를 사용하여 파일을 쓴 : 은이 코드를 사용하여, 다시 다시 sdcard에 (안드로이드 4),하지만 그것을 읽을 수있는 방법의 디렉터리로 텍스트 파일을 쓸 수 있어요 이 시퀀스를 사용하는 sdcard/test 디렉토리 ./ -이 코드는 추한 코드이지만 작동합니다!

fs.root.getFile 같은 방식으로 작동하지 않습니다. 반환되는 fullPath 정보는 제공된 경로가 "/data/data/com.appname/files"에 APPEND되었음을 나타내지 만 대체하지는 않습니다!

경고 메시지를받지 못했기 때문에 onloadend 기능이 작동하지 않고 오류 메시지가 표시되지 않았습니다. "file : /// sdcard/test"또는 "sdcard/test"로의 경로 변경은 아무런 효과가 없습니다.

도움을 주신 모든 분들께 감사드립니다. 미리 감사드립니다. 크리스

답변

0

당신의 sdcard에서 파일을 가져 오는 예를 작업 얻을 것이다이에서 PHONEGAP DOCUMENT

을 참조하십시오. 파일 다운로드에 문제가있는 경우 LINK

"/sdcard/backup.txt"대신 "backup.txt"만 사용하십시오.

잘 작동하는 것 같습니다.

PhoneGap은 경로의 세부 정보를 처리하며 디렉토리에서도 작동합니다.

+0

글쎄, 그건 내가 약 2 주부터 노력하고있어 그리고 당신은 내 코드는 실질적으로 폰갭 다큐 인 것을 알 수있다. "backup.txt"만 경로로 사용하는 경우 프로그램은 응용 프로그램 "file"디렉토리에서이 파일을 찾습니다. 내 질문은 내가 선택한 SDCARD의 디렉토리에있는 파일에 액세스하는 방법입니다. Phonegap은 그것을 처리하지 않습니다. 코드에 쓸 수 없다면 어떤 디렉토리를 사용하고 싶은지 어떻게 알 수 있습니까? 도움이 될 구체적인 예를 들어주십시오. – Chris

0

마지막으로 알아낼 수 있습니다 : 디렉토리 (Android 4.0, 삼성 Note 8)에 액세스하려면 문자 그대로 /data/data/com.app-name/files/apps/의 모든 디렉토리를 방문해야했습니다. (무작위 NO.)/다시 SDCARD로 선택하여 :

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

mosync의 새로 고침 클라이언트.

mosync apk로 응용 프로그램을 "컴파일"하려면 파일 계층 구조가 Reload Client보다 낮기 때문에 "../"의 4 번만 필요합니다. 어떤 경우에는 파일 탐색기에서 확인해야합니다 (루트 액세스 필요). 클라우드에서 phonegap으로 컴파일 할 때와 다른 점은 실제로 루트 경로는 sdcard입니다! 당신은 내가 알 수있는 한 데이터 디렉토리에 갈 수 없다.

이 경로는 mosync에서 쓰기 및 읽기와 함께 작동합니다. 내 실수는 텍스트 파일 내에 줄 바꿈 문자 "\ n"가 있다는 것입니다. 이 경우 필자는 그것을 쓸 수는 있지만 오류 메시지없이 독자가 멈 춥니 다.

희망은 다른 사람에게도 도움이 될 것입니다.

크리스

+0

안녕하세요 Chris, 코드를 게시 할 수 있습니까? 나는 아파치 코드바 프로젝트에서 첫 번째 코드를 복사/붙여 넣으려고하는데 작동하지 않는다. 파일 코데 기능이 작동하는 방식을 2 주 동안 검색합니다 :/여기에 두 개의 게시물이 있습니다. – JoDiii