配列 byte[] には、写真の完全なバイト単位のコピーが含まれています。byte[] を文字列に変換してファイルに書き込もうとすると、失敗します。
後でソケットを介して送信するために、文字列に変換する必要があります。
接続ごとのハンドラーには Socket (sock)、PrintWriter (out)、BufferedReader (in) があり、Socket を PrintWriter と BufferedReader に関連付けます。これで、out.println と in.readLine で文字列を送受信します。
どうすればこれを修正できますか?
テストコード:
// getPhoto() returns byte[]
String photo = new String(getPhoto());
// Create file
DataOutputStream os = new DataOutputStream(new FileOutputStream("out1.jpg"));
// This makes imperfect copy of the photo
os.writeBytes(photo);
//This works perfectly basically it copies the image through byte[]
//os.write(getPhoto());
// Close the output stream
os.close();