/**
* 該測驗用來測驗IOUtil類中的方法:
* public static String readString(RandomAccessFile raf,int length) throws Exception{
*/
public class Part4 {
/**
* 從給定的RandomAccessFile當前位置開始連續
* 讀取length個位元組,并轉換為字串后回傳
* 轉換字串時使用的字符集為:ISO8859-1
* 需要注意,由于業務邏輯要求,所以RandomAccessFile
* 使用完畢后不要關閉。
* @param raf
* @param length
* @return
* @throws Exception
*/
public static String readString(RandomAccessFile raf,int length) throws Exception{
byte[] buf=new byte[length];
int len=raf.read(buf);
String str=new String(buf,0,length,"ISO8859-1");
raf.close(); //此處需要close嗎?close會出現什么問題?不close會出現什么問題?
return str;
}
public static void main(String[] args) {
try {
/*
* 該測驗檔案中32個位元組表示的字串為lidz,剩余
* 字符全部為空格。
*/
RandomAccessFile raf = new RandomAccessFile("src/test/resources/test.dat","r");
String str = readString(raf,32);
/*
* 應當輸出:
* 內容:lidz
*/
System.out.println("內容:"+str.trim());
} catch (Exception e) {
e.printStackTrace();
}
}
}
uj5u.com熱心網友回復:
close()方法只要在使用完畢后呼叫都沒有問題,不呼叫也不會報錯。但是使用到了檔案流,用完之后必須及時通過close方法關閉,否則會一直處于打開狀態,直至程式停止,增加系統負擔。
uj5u.com熱心網友回復:
必須close,不止io這方面,以后所有用到資源的能close的用完都要closeuj5u.com熱心網友回復:
別誤匯入,HttpServletResponse的getOutputStream不需要手動flush和close,servlet,特別是在制作writeStream方面的工具類的時候,如千萬別在函式里面畫蛇添足加close或者flush,這樣一個thread里面如果多次執行你的這個writeStream函式,那么只有第一次是有效的,后面幾次都無效,而且不報錯!!!,到時候資料寫少了都不知道怎么回事,惡心死uj5u.com熱心網友回復:
說白了就是,自己new的Stream自己close,不是自己new的Stream千萬別手癢uj5u.com熱心網友回復:
所有樓上合起來正解轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/84846.html
標籤:Java EE
上一篇:security+JWT權限問題
