1. 程式人生 > >第12周預習作業

第12周預習作業

with pack 可能 操作 dex util -c nal pointer

6.為如下代碼加上異常處理

byte[] content = null;
FileInputStream fis = new FileInputStream("testfis.txt");
int bytesAvailabe = fis.available();//獲得該文件可用的字節數
if(bytesAvailabe>0){
    content = new byte[bytesAvailabe];//創建可容納文件大小的數組
    fis.read(content);//將文件內容讀入數組
}
System.out.println(Arrays.toString(content));//打印數組內容



package twentyth;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;

public class Six {
/*public static void main(String[] args) {
byte[] content = null;
Scanner sc=new Scanner(System.in);
FileInputStream fis=null;
while(sc.hasNext()) {
String str=sc.next();
try {
fis = new FileInputStream(str);
int bytesAvailabe = fis.available();//獲得該文件可用的字節數
if(bytesAvailabe>0){
content = new byte[bytesAvailabe];//創建可容納文件大小的數組
fis.read(content);//將文件內容讀入數組
}
System.out.println(Arrays.toString(content));//打印數組內容
} catch (Exception e) {
if(e instanceof FileNotFoundException) {
System.out.println("找不到文件"+str+",請重新輸入文件名");
}
else {
System.out.println("打開或讀取文件失敗!");
break;
}

}finally {
if(fis!=null){
try{
fis.close();
System.out.println("關閉文件ing");
}catch(NullPointerException e){//判斷是否是空指針異常
System.out.println(e);
}
}
}


} */
public static void main(String[] args) throws IOException{
byte[] content = null;
try(FileInputStream fis = new FileInputStream("testfis.txt")){//在try的圓括號中寫入將要關閉資源的對象
int bytesAvailabe = fis.available();//獲得該文件可用的字節數
if(bytesAvailabe>0){
content = new byte[bytesAvailabe];//創建可容納文件大小的數組
fis.read(content);//將文件內容讀入數組
}
}catch(Exception e){
System.out.println(e);
}
System.out.println(Arrays.toString(content));//打印數組內容
}
}

 

6.1 改正代碼,並增加如下功能。當找不到文件時,需提示用戶找不到文件xxx,請重新輸入文件名,然後嘗試重新打開。 如果是其他異常則提示打開或讀取文件失敗!
註1:裏面有多個方法均可能拋出異常。
功能2:需要添加finally關閉文件。無論上面的代碼是否產生異常,總要提示關閉文件ing。如果關閉文件失敗,提示關閉文件失敗!
6.2 結合題集6-2代碼,要將什麽樣操作放在finally塊?為什麽?使用finally關閉資源需要註意一些什麽?

try{}catch{}放入finally中,因為關閉文件可能存在異常。

6.3 使用Java7中的try-with-resources來改寫上述代碼實現自動關閉資源。簡述這種方法有何好處?

嘗試自動關閉資源的對象生成寫在try之後的圓括號中,無需判斷是否為null,也避免了在關閉時產生的其它異常,使整個代碼更簡潔。

第12周預習作業