這里的代碼給出了一個(gè)警告,即Resource leak: 'f' is never closed. 如果我在 try 塊內(nèi)關(guān)閉 f 它會(huì)起作用,但如果我放在f.close()finally 塊內(nèi)它就不起作用。它顯示錯(cuò)誤f cannot be resolved。所以有什么問(wèn)題?因此,該程序應(yīng)該從用戶那里獲取輸入并將其保存在 .doc 文件中,然后從同一文件中讀取數(shù)據(jù)并將其打印出來(lái)。如果不是很明顯,我正在學(xué)習(xí) Java。所以代碼有效,但我注意到有一個(gè)f未關(guān)閉的警告。我把f.close()語(yǔ)句放在塊中finally。它在那里顯示錯(cuò)誤。close 語(yǔ)句在塊中時(shí)運(yùn)行,但在塊中try無(wú)法識(shí)別。ffinallytry { RandomAccessFile f = new RandomAccessFile("E:\\emp.doc","r"); for (i = 0; i < size; i++) { id1[i] = f.read(); name[i] = f.readUTF(); add[i] = f.readUTF(); sal[i]=f.readDouble(); if (sal[i] > 25000) { System.out.println("ID:" + id1[i] + "\nName: " + name[i] + "\nAddress:" + add[i] + "\nSalary" + sal[i]); } }} catch (Exception ex) { ex.printStackTrace();}//finally {// f.close();//}因此,在代碼中,如果我不放置該程序塊,該程序?qū)⑦\(yùn)行但會(huì)顯示未關(guān)閉的finally警告。f如果我嘗試將其放入塊close內(nèi)try,則不會(huì)有任何警告。但是如果我把塊放在close里面finally就會(huì)出現(xiàn)錯(cuò)誤f cannot be resolved。那么我該怎么做才能解決這個(gè)警告呢?
1 回答

飲歌長(zhǎng)嘯
TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊
改成
try ( RandomAccessFile f = new RandomAccessFile("E:\\emp.doc","r")){ .... }
不需要關(guān)閉,因?yàn)樗鼤?huì)在 try-scope 結(jié)束后自動(dòng)調(diào)用。
添加回答
舉報(bào)
0/150
提交
取消