程序運行太卡,并且復制的文件太大
public static void CopyFileByFile(File preFile,?? ?File nexFile)throws IOException{
?? ?if(!preFile.exists()){
?? ??? ?throw new IllegalArgumentException("文件"+preFile+"不存在");
?? ?}
?? ?if(!preFile.isFile()){
?? ??? ?throw new IllegalArgumentException(preFile+"不是文件");
?? ?}
?? ?FileInputStream in=new FileInputStream(preFile);
?? ?FileOutputStream out=new FileOutputStream(nexFile);
?? ?byte[]bye=new byte[1024];
?? ?int b=in.read(bye, 0, bye.length);
?? ?while(b!=-1){
?? ?out.write(bye,0,b);
?? ?/*
?? ? * 這個方法的作用是把緩沖區的數據輸出。
?? ? * 一般在讀寫流的時候,數據是先被讀到了內存中,
?? ? * 再把數據寫到文件中,當數據讀完的時候不代表數據已經寫完了,
?? ? * 因為還有一部分有可能會留在內存這個緩沖區中。
?? ? * 這時候如果調用了close()方法關閉了讀寫流,
?? ? * 那么這部分數據就會丟失,所以應該在關閉讀寫流之前先flush()。
?? ? */
?? ?}
?? ?in.close();
?? ?out.close();
}
2016-10-31
謝謝啦,太不仔細了
2016-10-31
這個不是運行太卡,你這個是int b = in.read(bye,0,bye.length)讀取文件的時候,不是寫在while循環中,并不能進行判斷文件是否讀完。你都已經是死循環了,應該寫到while循環中進行判斷。你的代碼寫的是一直在nexFile文件中進行寫操作。
2016-10-31
把開辟的內存放大一些