java学习笔记(4)
(一)老師上周留了作業,讓我們改進復制代碼,我做的不好,在老師上課講解后,我基本明白了要怎么做,要把從源文件讀取字節從一個改為多個,這樣就可以提高運行效率,大大縮短運行時間,下面是我的兩段代碼和運行結果
1.運行較慢的
package CopyFile;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/**
- 實現文件復制
- @author Administrator
*/
//創建文件輸入流對象和文件輸出流對象//文件輸入流對象與源文件關聯FileInputStream fis = new FileInputStream(sFileName);//文件輸出流對象與目標文件關聯FileOutputStream fos = new FileOutputStream(dFileName);//循環讀取文件的內容,同時寫出到外部的磁盤文件int read = fis.read();//從關聯的源文件中讀一個字節,如果到達文件末,返回值為-1while(read != -1){fos.write(read);//向關聯的目標文件寫出一個字節read = fis.read();}//清空緩存關閉流對象fis.close();fos.close(); }
public class CopyFile {
public static void copyBytesFile(String sFileName,String dFileName) throws IOException{
/**- @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
long t1,t2;
t1 = System.currentTimeMillis();
try {
CopyFile.copyBytesFile("a.mp3", "temp.mp3");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
t2 = System.currentTimeMillis();
System.out.println("用時:" + (t2 - t1));
}
- @param args
}
2.運行較快的
package CopyFile;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/**
- 實現文件復制
- @author Administrator
*/
//創建文件輸入流對象和文件輸出流對象//文件輸入流對象與源文件關聯FileInputStream fis = new FileInputStream(sFileName);//文件輸出流對象與目標文件關聯FileOutputStream fos = new FileOutputStream(dFileName);//循環讀取文件的內容,同時寫出到外部的磁盤文件byte[] b = new byte[1024];/*從關聯的源文件中讀多個字節,保存到字節數組b中,如果到達文件末。* 返回值為-1,否則返回值為實際讀到的字節數。*/int read = fis.read(b);//從關聯的源文件中讀一個字節,如果到達文件末,返回值為-1while(read != -1){fos.write(b);//向關聯的目標文件寫出一個字節read = fis.read(b);}//清空緩存關閉流對象fis.close();fos.close(); }
public class CopyFile {
public static void copyBytesFile2(String sFileName,String dFileName) throws IOException{
/**- @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
long t1,t2;
t1 = System.currentTimeMillis();
try {
CopyFile.copyBytesFile2("a.mp3", "temp.mp3");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
t2 = System.currentTimeMillis();
System.out.println("用時:" + (t2 - t1));}
- @param args
}
轉載于:https://www.cnblogs.com/abnry/p/5368848.html
總結
以上是生活随笔為你收集整理的java学习笔记(4)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qunit 和 jsCoverage使用
- 下一篇: 内存 分析