《Java技術》第九次做業

(一)學習總結

1.用思惟導圖對javaIO操做的學習內容進行總結。

2.下面的程序實現了文件的拷貝,但採用的是一個字節一個字節的讀寫方式,效率很低。使用緩衝區能夠減小對文件的操做次數,從而提升讀寫數據的效率。IO包中提供了兩個帶緩衝的字節流BufferedInputStream和BufferedOutputStream,查閱JDK幫助文檔,修改程序,利用這兩個類完成文件拷貝,對比執行效率。java

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

}
修改以前:
git

  • BufferedInputStream

在建立 BufferedInputStream 時,會建立一個內部緩衝區數組。在讀取或跳過流中的字節時,可根據須要從包含的輸入流再次填充該內部緩衝區,一次填充多個字節。數據庫

  • BufferedOutputStream

經過設置這種輸出流,應用程序就能夠將各個字節寫入底層輸出流中,而沒必要針對每次字節寫入調用底層系統。數組

修改以後:
工具

(二)實驗總結

  • 1.程序設計思路:設計一個登陸類,定義屬性用戶名、密碼,方法判斷用戶名及密碼,設一個登陸界面登陸,設計一個寵物和一個賣寵物的類,定義屬性寵物屬性編號、品種、年齡、數量、價格,賣寵物類多定義一個購買數量屬性,建一個寵物管理界面,能夠添加修改刪除、購買寵物,也能夠退出,建一個文件類,將購買的寵物放到這個文件裏,設計一個工具來,定義界面方法,設計一個數據庫類,登陸鏈接數據庫
    -類圖:
  • 實驗問題分析:學習

    問題1:this

    public void buyPetItem(String no,int number) {
    PetItem pet = adminService.queryData(no);
    if(pet != null){
    if(pet.getNumber() < number){
    JOptionPane.showMessageDialog(this, "現貨沒有這麼多了。請從新輸入");
    buyNumberText.setText("");
    buyNumberText.requestFocus();
    }else{
    pet.setNumber(pet.getNumber() - number);
    boolean updateSuccess = adminService.updatePetItem(pet.getNo(),pet.getKind(),pet.getAge(),String.valueOf(pet.getNumber()),pet.getPrice().toString());
    if(updateSuccess){
    queryPetItem();
    JOptionPane.showMessageDialog(this, "購買成功");
    buyNoText.setText("");
    buyNumberText.setText("");
    Double money = pet.getPrice()*number;
    SellPetItem spet = new SellPetItem(pet.getNo(),pet.getKind(),pet.getAge(),pet.getPrice(),number,money);
    FileUtils.savePets(spet); //將本次數據保存到本地文件
    }else{
    JOptionPane.showMessageDialog(this, "購買失敗");
    }
    }
    }else{
    JOptionPane.showMessageDialog(this, "購買失敗");
    }
    }
    緣由:調用方法類型有錯.net

    解決方案:在調用updatePetItem()方法的時候沒有轉換數量的類型,後來改爲了String.valueOf(pet.getNumber()),就正確了。設計

  • 2.文件複製code

設計思路:用戶輸入文件原路徑,再輸入要複製的路徑,從而複製文件

問題:

System.out.println("請輸入源文件的位置(輸入格式爲:d:\\\\filename\\file):");
System.out.println("請輸入目標文件的位置(輸入格式爲:d:\\\\ filename\\file):");

緣由:‘’沒表示出來

解決方案:原先寫的是‘\’,後來改成‘\\’,就能夠顯示出來了

(三)代碼託管

  • 碼雲commit歷史截圖
相關文章
相關標籤/搜索