【GO x CORDOVA】gopherjsでのファイル入出力


GOをgopherjsでjavascriptに変換してからCordovaで利用することを考えます。

 

os.Open()などでファイルを開く処理はnode.js以外で使えない。

Cordovaで操作可能な場所のファイルを使う場合でもPermission deniedになる。

 

そこで基本的にCordova側で入出力してGO側で実処理と変換を行うようにします。

 

まずはos.Openを試してみます。

gopherjsで変換後のjsを見ると何らかのsyscallを呼んでいますが、osかブラウザセキュリティかの問題で権限不足のエラーになります。

CORDOVA(javascript)→GO

GO側ではファイル操作できないのでjs.Objectを変換するコードを入れる。

ちょっととっつきにくい。キャストしてアサーションしている感じだろうか。

 

CordovaではFILEプラグインを導入後、resolveLocalFileSystemURL()を使ってファイルアクセスしてArrayBufferを渡します。

無事ファイルを渡せました。

 

GO→CORDOVA(javascript)

こちら側は比較的簡単で変換用の関数を呼んでjs.Object型で返すだけでいい。

[]byte/[]uint8ArrayBufferに変換して返すようにする。

ファイル操作はbytes.Bufferをよく使うのでBytes()で変換もかませる。

 

Cordova側では通常の書き込みを行う。

こちらも無事ディレクトリに保存できました。


コメントを残す

メールアドレスが公開されることはありません。