《Java技术》第九次作业计科1501赵健宇-IO
(一)學習總結
1.用思維導圖對javaIO操作的學習內容進行總結。
2.下面的程序實現了文件的拷貝,但采用的是一個字節一個字節的讀寫方式,效率很低。使用緩沖區可以減少對文件的操作次數,從而提高讀寫數據的效率。IO包中提供了兩個帶緩沖的字節流BufferedInputStream和BufferedOutputStream,查閱JDK幫助文檔,修改程序,利用這兩個類完成文件拷貝,對比執行效率。
import java.io.*; public class Test{public static void main(String args[]) {FileInputStream in=null;FileOutputStream out=null;File fSource=new File("d:"+File.separator+"my.jpg");File fDest=new File("d:"+File.separator+"java"+File.separator+"my.jpg");if(!fSource.exists()){ System.out.println("源文件不存在"); System.exit(1); }if(!fDest.getParentFile().exists()){ fDest.getParentFile().mkdirs(); }try { in=new FileInputStream(fSource);out=new FileOutputStream(fDest);int len=0;long begintime = System.currentTimeMillis();while((len=in.read())!=-1){out.write(len); } long endtime = System.currentTimeMillis();System.out.println("文件拷貝完成,耗時"+(endtime-begintime)+"毫秒");}catch(Exception e){System.out.println("文件操作失敗"); }finally{ try { in.close(); out.close();} catch (IOException e) {e.printStackTrace();} } } }運行結果:文件拷貝完成,耗時2657毫秒
修改后的代碼:
public class BufferedInputStream
extends FilterInputStreamBufferedInputStream
為另一個輸入流添加一些功能,即緩沖輸入以及支持 mark 和reset方法的能力。在創建BufferedInputStream 時,會創建一個內部緩沖區數組。在讀取或跳過流中的字節時,可根據需要從包含的輸入流再次填充該內部緩沖區,一次填充多個字節。mark 操作記錄輸入流中的某個點,reset操作使得在從包含的輸入流中獲取新字節之前,再次讀取自最后一次 mark 操作后讀取的所有字節。
int read(byte[] b, int off, int len)
從此字節輸入流中給定偏移量處開始將各字節讀取到指定的 byte 數組中。
運行結果:文件拷貝完成,耗時16毫秒
3.其他需要總結的內容。
- System.currentTimeMillis()產生一個當前的毫秒,這個毫秒其實就是自1970年1月1日0時起的毫秒數,Date()其實就是相當于Date(System.currentTimeMillis());因為Date類還有構造Date(long date),用來計算long秒與1970年1月1日之間的毫秒差。
(二)實驗總結
實驗內容:
1.寵物商店:在實驗八的基礎上,增加一個功能,用文件保存每日的交易信息記錄。
程序設計思路:在上一次實驗基礎上新建工具類FileTools
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
format.format(date);//獲取并使用當前時間使用StringBuffer及apend()方法,動態寫入文件內容,\r\n為行分割。
2.完成文件復制操作,在程序運行后,提示輸入源文件路徑和目標文件路徑。
《使用netbeans完成GUI復制程序》
開始界面
操作完成界面
出錯界面
(三)代碼托管
點擊此處進入碼云
轉載于:https://www.cnblogs.com/ai1045152332/p/6893621.html
總結
以上是生活随笔為你收集整理的《Java技术》第九次作业计科1501赵健宇-IO的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转]C# 将类的内容写成JSON格式的
- 下一篇: 第02天