2016-01-09 8 views
16

Użyłem Cordova File Plugin do tworzenia plików na urządzeniu mobilnym. Poniżej znajduje się kod do tworzenia plików:Gdzie znajduje się lokalizacja pliku utworzonego przez wtyczkę do pliku Cordova?

window.resolveLocalFileSystemURL(cordova.file.dataDirectory, function (dir) { 
    alert(cordova.file.dataDirectory); 
    dir.getFile("log.txt", { create: true }, function (file) { 
      alert("got the file: "+ file.name + ', ' + file.fullPath); 
    }); 
}); 

Kiedy wdrożyć aplikację na telefon z Androidem, plik będzie tworzyć się pomyślnie, ale nie mogę znaleźć utworzony plik na moim urządzeniu.

Chociaż cordova.file.dataDirectory wskazuje file:///data/data/io.cordova.myappId/files/ ścieżki na moim urządzeniu folder io.cordova.myappId nie istnieje w data>data ścieżce, ale istnieje w Android>data ścieżce. Przy okazji sprawdziłem zarówno plik , jak i plik nie istnieje.

Czy to dlatego, że:

Utworzony plik znajduje się w innym miejscu, więc gdzie mogę znaleźć takiego?

lub

Bo to prywatny i mój menedżer plików nie ma do niego dostępu, więc jak mogę zmienić pozwolenie określające mieć plik publiczny?

Odpowiedz

19

Dlaczego nie mogę znaleźć pliku na moim urządzeniu?

Plik został utworzony pomyślnie, ale nie mogę go znaleźć na moim urządzeniu, ponieważ ścieżka dataDirectory, którą wskazuję do utworzenia pliku, jest ścieżką prywatną i mój menedżer plików urządzenia nie ma do niego dostępu (baza na this table). Aktualnie dataDirectory jest opcją Internal Storage.

Pamięć wewnętrzna: zapisz prywatne dane w pamięci urządzenia.

Możesz zapisywać pliki bezpośrednio w pamięci wewnętrznej urządzenia. Domyślnie pliki zapisane w pamięci wewnętrznej są prywatne dla aplikacji , a inne aplikacje nie mają do nich dostępu (ani użytkownik ). Gdy użytkownik odinstalowuje aplikację, pliki te są usunięte. (reference)

Jak utworzyć plik publicznych?

Tak więc, aby utworzyć plik na moim urządzeniu, do którego mogę uzyskać dostęp za pomocą menedżera plików, muszę użyć jednej z publicznych opcji ścieżki, takich jak: externalDataDirectory. Wcześniej myślałem, że to jest do przechowywania plików na zewnętrznej karcie SD, których nie miałem na moim telefonie, więc nie przetestowałem tego. Ale testując to dzisiaj, tworzy plik na mojej wewnętrznej pamięci urządzenia w ścieżce Android/data/<app-id>/files, która jest publiczna i mogę uzyskać do niego dostęp za pomocą menedżera plików urządzeń.

Właściwie termin internal i external było mylące dla mnie podczas external storage może być wymienny nośnik pamięci (takich jak karty SD) lub wewnętrzne (niewymienne) Przechowywanie (reference).

+0

Witam @ A.M, mam przed sobą podobny problem. Chociaż używam externalDataDirectory, nie mogę znaleźć mojego pliku w urządzeniu. Funkcja getFile zwraca sukces. Czy brakuje mi czegoś innego? Proszę pomóż. – AishApp

+0

@ Aish123 Nie mam twojego kodu, więc nie mogę Ci powiedzieć, czy coś Cię nie ma, czy nie. Po prostu mogę powiedzieć, że to zadziała: okno.resolveLocalFileSystemURL (cordova.file.externalDataDirectory, function (dirEntry) {dirEntry.getDirectory (dirName, {create: true}, function (dirEntry) {dirEntry.getFile (fileName, {create: true}, function (fileEntry) {alert (" Utwórz plik: "+ fileEntry.name +", "+ fileEntry.fullPath);}); }, errorHandler) }, errorHandler); –

+0

@ Aish123 Sprawdź również inne ścieżki ścieżek r/w na [tym stole] (https://www.npmjs.com/package/cordova-plugin-file#android-file-system-layout), jeśli masz urządzenie z Androidem lub sprawdź inne tabele w oparciu o system operacyjny Twojego urządzenia. –

Powiązane problemy