日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

《Java技术》第九次作业计科1501赵健宇-IO

發(fā)布時間:2023/12/18 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《Java技术》第九次作业计科1501赵健宇-IO 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

(一)學(xué)習(xí)總結(jié)

1.用思維導(dǎo)圖對javaIO操作的學(xué)習(xí)內(nèi)容進行總結(jié)。

2.下面的程序?qū)崿F(xiàn)了文件的拷貝,但采用的是一個字節(jié)一個字節(jié)的讀寫方式,效率很低。使用緩沖區(qū)可以減少對文件的操作次數(shù),從而提高讀寫數(shù)據(jù)的效率。IO包中提供了兩個帶緩沖的字節(jié)流BufferedInputStream和BufferedOutputStream,查閱JDK幫助文檔,修改程序,利用這兩個類完成文件拷貝,對比執(zhí)行效率。

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();} } } }

運行結(jié)果:文件拷貝完成,耗時2657毫秒

修改后的代碼:
public class BufferedInputStream
extends FilterInputStreamBufferedInputStream
為另一個輸入流添加一些功能,即緩沖輸入以及支持 mark 和reset方法的能力。在創(chuàng)建BufferedInputStream 時,會創(chuàng)建一個內(nèi)部緩沖區(qū)數(shù)組。在讀取或跳過流中的字節(jié)時,可根據(jù)需要從包含的輸入流再次填充該內(nèi)部緩沖區(qū),一次填充多個字節(jié)。mark 操作記錄輸入流中的某個點,reset操作使得在從包含的輸入流中獲取新字節(jié)之前,再次讀取自最后一次 mark 操作后讀取的所有字節(jié)。
int read(byte[] b, int off, int len)
從此字節(jié)輸入流中給定偏移量處開始將各字節(jié)讀取到指定的 byte 數(shù)組中。

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);byte[] b = new byte[1024];int len = 0;long begintime = System.currentTimeMillis();while ((len = in.read(b)) != -1) {out.write(b,0,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();}}} }

運行結(jié)果:文件拷貝完成,耗時16毫秒

3.其他需要總結(jié)的內(nèi)容。

  • System.currentTimeMillis()產(chǎn)生一個當前的毫秒,這個毫秒其實就是自1970年1月1日0時起的毫秒數(shù),Date()其實就是相當于Date(System.currentTimeMillis());因為Date類還有構(gòu)造Date(long date),用來計算long秒與1970年1月1日之間的毫秒差。

(二)實驗總結(jié)

實驗內(nèi)容:
1.寵物商店:在實驗八的基礎(chǔ)上,增加一個功能,用文件保存每日的交易信息記錄。
程序設(shè)計思路:在上一次實驗基礎(chǔ)上新建工具類FileTools

  • Date date = new Date();
    SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
    format.format(date);//獲取并使用當前時間

  • 使用StringBuffer及apend()方法,動態(tài)寫入文件內(nèi)容,\r\n為行分割。

2.完成文件復(fù)制操作,在程序運行后,提示輸入源文件路徑和目標文件路徑。
《使用netbeans完成GUI復(fù)制程序》

開始界面

操作完成界面

出錯界面

(三)代碼托管

點擊此處進入碼云

轉(zhuǎn)載于:https://www.cnblogs.com/ai1045152332/p/6893621.html

總結(jié)

以上是生活随笔為你收集整理的《Java技术》第九次作业计科1501赵健宇-IO的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。