- Androidプログラミング質問スレ revision43
91 :デフォルトの名無しさん[sage]:2014/05/27(火) 15:25:53.56 ID:tqvORO0Y - ソケット通信で受信したバイナリファイルをAndroid端末に保存するには、どのようにすれば良いでしょうか。
以下は、現在の未完成のコードです。 InputStream in = new BufferedInputStream(socket.getInputStream()); OutputStream out = new BufferedOutputStream(openFileOutput(file, MODE_APPEND)); int len; while ((len = in.read()) != -1) { out.write(len); }
|
- Androidプログラミング質問スレ revision43
94 :デフォルトの名無しさん[sage]:2014/05/27(火) 16:29:33.52 ID:tqvORO0Y - >>92
>・書き込みパスの取得 書き込み先のディレクトリとファイル名と言うことでしょうか。 それについては、openFileOutputを使うことで解決していると思っていましたが、間違っているかもしれません。 >・マニフェストの権限設定 <uses-permission android:name="android.permission.INTERNET"></uses-permission> を追加しています。 >・ファイルへの書き込み処理 in.read()のあたりで止まっているようです。 >・ソケット通信処理 接続先のPCに接続できていることは確認しています。 接続元(Android)のIPを表示させて確認しました。 また、PC側で読み込みと書き込みが終了していることも確認しています。 outを宣言した直後、in.read()の直前、in.read()の直後、catchの4箇所で、デバッグ用のメッセージを表示させるようにしました。 その結果、in.read()の直後とcatchのメッセージが表示されません。 よって、in.read()あたりに問題があると推測しますが、如何でしょうか。 なお、コンパイル時も実行時もエラーは出ていません。
|
- Androidプログラミング質問スレ revision43
98 :91[sage]:2014/05/27(火) 17:35:04.84 ID:tqvORO0Y - 皆さん、ありがとうございます。
現状を説明します。 書き込み先は、アプリのデフォルトのフォルダ(?)です。 ソケット通信については、DataOutputStreamを使って文字列を送ることに成功しています。 ファイル書き込みについては、苦戦中です。 とりあえず、ご提案通り、サンプルプロジェクトを上げようと思います。 ……が、色々といじりすぎて見にくくなっていたため、調整中です。 暫くお待ちを。 >>97のリンク先については、サンプルを上げてから解読する予定です。 毎度長文失礼。
|
- Androidプログラミング質問スレ revision43
100 :91[sage]:2014/05/27(火) 18:05:38.68 ID:tqvORO0Y - サンプルプロジェクトです。
作法などでまずいところもありそうですが、とりあえず、動くものにすることを優先したいと思います。 ttp://www1.axfc.net/u/3246094 pw
|
- Androidプログラミング質問スレ revision43
101 :91[sage]:2014/05/27(火) 18:10:11.18 ID:tqvORO0Y - >>99
最低限の部分に限定してみました。 これで動かないので困っています……。 >>100の補足 protected String server = "127.0.0.1"; protected int port = 50000; の部分については、実行される環境に合わせて書き換えていただければと思います。
|
- Androidプログラミング質問スレ revision43
102 :91[sage]:2014/05/27(火) 19:22:50.60 ID:tqvORO0Y - 連投失礼。
もしかしたら、解決してしまったかもしれません……! まず、>>97さんの助言を参考に、BufferedInputStreamを外しました。 それから、 int len; byte[] buffer = new byte[1024]; while ((len = in.read(buffer)) != -1) { out.write(buffer, 0, len); } のようにバッファを作ってみたところ、その後の textView.setText("Finished"); が実行されました。 本当にファイルが出来ているかどうかはわかりませんが、私用のため、席を外します。 また後程検証します。
|