package test2;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class copypng {
public static void main(String[] args) throws IOException{
FileInputStream fis = new FileInputStream("D:\\itcast\\1.jpg");
FileOutputStream fos = new FileOutputStream("C:\\itcast\\1.jpg");
byte bys[] = new byte[1024];
while(fis.read(bys)!=-1) {
fos.write(bys,0,fis.read(bys));
}
fos.close();
fis.close();
}
}
為什么復制出來的圖片位元組是原圖的位元組的一半,并且不能顯示
uj5u.com熱心網友回復:
因為fis.read(bys)讀取到值后沒有把它寫出去,而是把下一次拿到的資料寫出去了,寫出的檔案肯定只有一半大小,實體化一下就好了:int temp = 0;
while((temp = fis.read(bys))!=-1) {
fos.write(bys,0, temp);
}
uj5u.com熱心網友回復:
fis.read()方法在讀取一次之后會自動移動指標,所以判斷時候的read的位元組,在輸出的時候又往下移動了,所以永遠少一半,一半的位元組在判斷的時候被跳過了。正常回圈不都得常量++嘛,用read的時候不用,就是因為他會自動移動。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/278283.html
標籤:Java SE
上一篇:Idea
