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 時,會建立一個內部緩衝區數組。在讀取或跳過流中的字節時,可根據須要從包含的輸入流再次填充該內部緩衝區,一次填充多個字節。數據庫
經過設置這種輸出流,應用程序就能夠將各個字節寫入底層輸出流中,而沒必要針對每次字節寫入調用底層系統。數組
修改以後:
工具
實驗問題分析:學習
問題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):");
緣由:‘’沒表示出來
解決方案:原先寫的是‘\’,後來改成‘\\’,就能夠顯示出來了