トップページ > プログラム > 2014年05月27日 > tqvORO0Y

書き込み順位&時間帯一覧

3 位/180 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000001112100006



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
91
Androidプログラミング質問スレ revision43

書き込みレス一覧

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");
が実行されました。

本当にファイルが出来ているかどうかはわかりませんが、私用のため、席を外します。
また後程検証します。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。