為什么拷貝出來的文件這么大啊。。
public static void copyFile(File srcFile,File destFile) throws IOException{
if(!srcFile.exists()) {
throw new IllegalArgumentException("文件名:"+srcFile+"不存在");
}
if(!srcFile.isFile()) {
throw new IllegalArgumentException(srcFile+"不是文件");
}
FileInputStream fis = new FileInputStream(srcFile);
FileOutputStream fos = new FileOutputStream(destFile);
byte[] buf = new byte[8*1024];
int b = fis.read(buf,0,buf.length);//讀取數(shù)據(jù)放到字節(jié)數(shù)組里
while(b!=-1) {
fos.write(buf, 0, b);//寫入數(shù)據(jù)到流
fos.flush();//最好寫上
}
fis.close();
fos.close();
System.out.println("拷貝完畢");
}
public static void main(String[] args){
// TODO Auto-generated method stub
// FileUtils.listDirectory(new File("E:\\example"));
try {
IOUtil.copyFile(new File("E:\\example\\original.txt"), new File("E:\\example\\new.txt"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
2019-07-06
我自己回答一下吧。read方法返回值賦給b不能在while體外,否則將執(zhí)行無限循環(huán)。相當于b是給定的不為-1的值,而在while循環(huán)中,b是一直在檢驗的,檢驗輸入流是否讀取到文件末端。