質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Cordova

Cordovaは様々なデバイスで使うことができるオープンソースなモバイル用開発プラットフォームです。開発者に各デバイスの元のプラットフォームで開発する必要をなくし、HTML・JavaScript・CSSなどの一般的なウェブのテクノロジーを使ってすべてのデバイスで展開することができるモバイルのアプリケーションを生成することを可能にします。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

解決済

2回答

704閲覧

PERSISTENTに保存したテキストファイルの内容を取得したい

agepan

総合スコア66

Cordova

Cordovaは様々なデバイスで使うことができるオープンソースなモバイル用開発プラットフォームです。開発者に各デバイスの元のプラットフォームで開発する必要をなくし、HTML・JavaScript・CSSなどの一般的なウェブのテクノロジーを使ってすべてのデバイスで展開することができるモバイルのアプリケーションを生成することを可能にします。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

0グッド

1クリップ

投稿2017/08/23 08:04

Monacaを使用して、PERSISTENT領域に保存したテキストファイル(abc.txt)の内容を取得したいと考えております。

テキストファイルの内容は配列で、配列をテキストファイルへ書き出すことと、保存したテキストファイルのURL(file://〜〜/documents/abc.txt)を取得するところまではできました。

調べますとファイルAPIのページにて、以下のコードを用いることでテキストファイルの中身を取得できるようなのですが、具体的にこのコードをさらにどう書き換えれば上記目的を達成できるか何とも分からず、お知恵を拝借できればと思います。

よろしくお願いいたします。

function readFile(fileEntry) { fileEntry.file(function (file) { var reader = new FileReader(); reader.onloadend = function() { console.log("Successful file read: " + this.result); displayFileData(fileEntry.fullPath + ": " + this.result); }; reader.readAsText(file); }, onErrorReadFile); }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

PERSISTENT領域はiosとAndroidで異なります。
私の環境はiosですので、Documents/配下となるので「cordova.file.documentsDirectory」を指定します。
フォルダの詳細についてはリンク内容を参照してください。

function abcTXT() { var filename = 'abc.txt'; var folderurl = cordova.file.documentsDirectory; // サブディレクトリの場合は後ろに付加します // var folderurl = cordova.file.documentsDirectory + 'subdir-id/'; window.resolveLocalFileSystemURL( folderurl , function getDirectoryEntry( directoryEntry ) { directoryEntry.getFile( filename, null, function readFile( fileEntry ) { fileEntry.file( function( file ) { var reader = new FileReader(); reader.onloadend = function() { alert("Successful file read: " + this.result); displayFileData(fileEntry.fullPath + ": " + this.result); }; reader.readAsText(file); }, function fail(e) { // エラー処理 } ); }, function fail(e) { // エラー処理 } ); }, function fail(e) { // エラー処理 } ); };

投稿2017/08/24 03:54

yatama

総合スコア66

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

agepan

2017/08/24 12:22

バッチリです!テキストファイルから内容を取得してアラートで確認することができました!サブディレクトリの記述もありがとうございます、とても役立ちます! AndroidでもPERSISTENT領域(内蔵ストレージ)に保存したいと思いますが、その場合はcordova.file.dataDirectoryを用いればいいと言うことでしょうか? 調べたところ、cordova.file.dataDirectoryのdocuments以下にデータを置けば良い?らしいです。 その場合は var folderurl = cordova.file.dataDirectory + 'documents/'; と記述することになるのかなと思います。
guest

0

保存したテキストファイルのURL(file://〜〜/documents/abc.txt)を取得するところまで

のソースがあれば説明しやすいのですが、

var filename = 保存したテキストファイルのURL; directoryEntry.getFile(filename, null, function readFile(fileEntry) { fileEntry.file(function (file) { var reader = new FileReader(); ・・・・・・・

勿論、directoryEntryを取得する為の window.requestFileSystem か window.resolveLocalFileSystemURL が必要です。

回答になっていますか?

投稿2017/08/23 08:37

yatama

総合スコア66

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

agepan

2017/08/23 12:14

保存したテキストファイルのURLを取得するというのは、PERSISTENT領域に保存したファイルURL一覧を取得できたという意味でありました。テキストファイルの名前(abc.txt)は決めうちなので、それでURL(フルパス)が分かっているということですね。 お教え頂いたコードでさらに弄ってみたのですが(合ってるのか全く未知数ですが…)、ReadFileのエラーが出て立ち往生してしまいました。HTML上のボタンを押すとabcTXT()が実行され、テキストファイルの中身がアラートで表示されてくれれば…と思いつつ弄ってみたものです。 function abcTXT(){ var filename = 'abc.txt'; window.resolveLocalFileSystemURL("cdvfile://localhost/persistent/", function(dir){ dir.getFile(filename, null, function readFile(fileEntry) { fileEntry.file(function (file) { var reader = new FileReader(); reader.onloadend = function() { alert("Successful file read: " + this.result); displayFileData(fileEntry.fullPath + ": " + this.result); }; reader.readAsText(file); }, onErrorReadFile); } ); } );}
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問