私はカスタムソケットクライアントサーバーを持っています。バイナリファイルを転送すると、いくつかのバイトが範囲外の文字に変換されます。だから私は16進数の文字列でそれらを送信します。それは動作します。しかし、別の問題では、これは解決策ではありません。ソケットまたはhttpで画像をダウンロードする
ネットから画像をダウンロードするときも同じことが起こります。いくつかのバイトは何かに変わります。私はバイトをバイトで比較しました。 文字列に変換して表示しますか?シンボルの代わりに。私は読者とバイト配列入力ストリームを試してみました。私はネット上のすべての例を試しました。私がやっている間違いは何ですか?
更新(答えは受け入れ):
あなたが送信または受信オブジェクトのMIMEを確認してください。バイナリファイルの場合は、InputStream | OutputStreamと派生クラス、テキストの場合は、Reader |ライターと派生クラス。
私が行ったように、バイナリファイルをダウンロードする(テキストについては、この唯一の作品を、そしてあなたは、パフォーマンス上の問題に加え進文字列を使用する必要があります)リーダーとライターを使用しないでください:
void saveFile(String strFileName){
try{
URL url = new URL(strImageRoot + strFileName);
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
BufferedWriter bw = new BufferedWriter(new FileWriter(strImageDownloadPath + strFileName));
String line = null;
while ((line = reader.readLine()) != null) {
bw.write(line);
}
}catch(FileNotFoundException fnfe){
System.out.println("FileNotFoundException occured!!!");
}catch(IOException ioe){
}catch(Exception e){
System.out.println("Exception occured : " + e);
}finally{
System.out.println("Image downloaded!!!");
}
}
... –