程序運行太卡,并且復制的文件太大
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);
?? ?/*
?? ? * 這個方法的作用是把緩沖區(qū)的數(shù)據(jù)輸出。
?? ? * 一般在讀寫流的時候,數(shù)據(jù)是先被讀到了內(nèi)存中,
?? ? * 再把數(shù)據(jù)寫到文件中,當數(shù)據(jù)讀完的時候不代表數(shù)據(jù)已經(jīng)寫完了,
?? ? * 因為還有一部分有可能會留在內(nèi)存這個緩沖區(qū)中。
?? ? * 這時候如果調(diào)用了close()方法關閉了讀寫流,
?? ? * 那么這部分數(shù)據(jù)就會丟失,所以應該在關閉讀寫流之前先flush()。
?? ? */
?? ?}
?? ?in.close();
?? ?out.close();
}
2016-10-31
謝謝啦,太不仔細了
2016-10-31
這個不是運行太卡,你這個是int b = in.read(bye,0,bye.length)讀取文件的時候,不是寫在while循環(huán)中,并不能進行判斷文件是否讀完。你都已經(jīng)是死循環(huán)了,應該寫到while循環(huán)中進行判斷。你的代碼寫的是一直在nexFile文件中進行寫操作。
2016-10-31
把開辟的內(nèi)存放大一些