我正在使用以下代碼從套接字讀取圖像文件。它從服務器讀取所有字節,因爲服務器和Android機器上的文件大小相同。當我打開此文件時,它不會打開文件並生成文件已損壞或太大的錯誤。我正在將圖像文件從服務器端傳輸到客戶端,而閱讀圖像文件時,我得到了這個問題
public Bitmap fileReceived(InputStream is)
throws FileNotFoundException, IOException {
Bitmap bitmap = null;
String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
String fileName = "a.png";
String imageInSD = baseDir + File.separator + fileName;
System.out.println(imageInSD);
if (is!= null) {
FileOutputStream fos = null;
BufferedOutputStream bos = null;
try {
fos = new FileOutputStream(imageInSD);
bos = new BufferedOutputStream(fos);
byte[] aByte = new byte[1024];
int bytesRead;
while (true ) {
bytesRead = is.read(aByte);
bos.write(aByte, 0, bytesRead);
if (is.available()==0)
break;
}
bos.flush();
bos.close();
// is.reset();
// here it give error i.e --- SkImageDecoder::Factory returned null
bitmap = BitmapFactory.decodeFile(imageInSD);
} catch (IOException ex) {
// Do exception handling
Log.i("IMSERVICE", "exception ");
}
}
return bitmap;
}
按字節比較會嘗試一個字節,如果這兩個文件是真的一樣? [在Linux上,我會嘗試在控制檯上的'diff'] – MrSmith42
傳輸圖像的正確方法是什麼?我嘗試了很多不同的方式,但我有問題。我比較它們都相同的字節,但索引有問題。 –
我改變了代碼,我只有一個問題,那就是當我在十六進制編輯器中更改文件的第一個字節時,它會更正文件。 –