私は受け取ったデータを保存しようとするAndroidにbmpファイルとクライアントを送信するサーバーを持っています。Javaで受信したデータを保存します
...
byte[] Rbuffer = new byte[2000];
dis.read(Rbuffer);
try {
writeSDCard.writeToSDFile(Rbuffer);
} catch (Exception e) {
Log.e("TCP", "S: Error at file write", e);
} finally {
Log.e("Writer", "S: Is it written?");
}
...
void writeToSDFile(byte[] inputMsg){
// Find the root of the external storage.
// See http://developer.android.com/guide/topics/data/data- storage.html#filesExternal
File root = android.os.Environment.getExternalStorageDirectory();
File dir = new File (root.getAbsolutePath() + "/download");
if (!(dir.exists())) {
dir.mkdirs();
}
Log.d("WriteSDCard", "Start writing");
File file = new File(dir, "myData.txt");
try {
// Start writing in the file without overwriting previous data (true input)
Log.d("WriteSDCard", "Start writing 1");
FileOutputStream f = new FileOutputStream(file, true);
PrintWriter ps = new PrintWriter(f);
// PrintStream ps = new PrintStream(f);
ps.print(inputMsg);
ps.flush();
ps.close();
Log.d("WriteSDCard", "Start writing 2");
f.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
Log.i(TAG, "******* File not found. Did you" +
" add a WRITE_EXTERNAL_STORAGE permission to the manifest?");
} catch (IOException e) {
e.printStackTrace();
}
}
しかし、出力に、私はオブジェクトID
例えばを受け取る: 私は、次のコードを使用してファイル内のデータを保存します [B @の23fgfgre [Bする@ eft908eh ...
(【がarray.The Bはbyte.The @はID.The六角桁から型がオブジェクトIDまたはハッシュコードである分離手段)
"PrintWriter"の代わりに "PrintStream"を使用しても同じ結果が得られます...
実際の出力を保存するにはどうしたらいいですか?
'FileOutputStream'から' BufferedOutputStream'を作成し、 'write(byte [])'メソッドを使ってみましたか? –
'Rbuffer =新しいバイト[2000];'。あなたのbmpファイルは2000バイトより小さいですか? – greenapps
'dir.mkdirs();'戻り値を確認してください。それは誤っている可能性があります。それが偽であるが、トーストと戻り値を表示するならば、あなたのコードを続行しないでください。 – greenapps