カスタムsocket
クライアント サーバー データ (ファイルまたはテキスト) 送信コードがあります。バイナリ ファイルを転送すると、一部のバイトが範囲外の文字に変換されるようになりました。だから私はそれらを16進文字列で送ります。それはうまくいきます。しかし、別の問題については、これは解決策ではありません。これにはパフォーマンス上の問題もあります。
バイトを 16 進数に変換するには、Java コードの助けを借りました。
ネットから画像をダウンロードすると、同じことが起こります。一部のバイトは別のものに変わります。バイトごとに比較しました。?
シンボルの代わりに String show に変換します。リーダーとバイト配列入力ストリームを試しました。私はネット上のすべての例を試しました。私がしている可能性のある間違いは何ですか?
バイトをファイルに保存するためのマイ コード:
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!!!");
}
}