下面是代碼部分:
public static void count() throws IOException {
Properties prop = new Properties();
File file = new File("app.ini");
if (!file.exists())
file.createNewFile();
prop.load(new BufferedReader(new FileReader(file)));
int count = 0;
String appRunCount = prop.getProperty("appruncount");
if (appRunCount != null) {
count = Integer.parseInt(appRunCount);
if (count >= 5) {
System.out.println("試用次數超過限制,請注冊後使用");
return;
}
}
count++;
prop.setProperty("appruncount", count + "");
prop.store(new BufferedWriter(new FileWriter(file)), "");
}
請問在我這段代碼裡,BufferedReader與BufferedWriter流不顯示的去關閉會占用內存嗎?由於匿名對象使用方便就這麼寫了,但是我又怕不關閉流占用內存。其實我想問的是程序會自動的幫我關閉這兩個流嗎?或者說匿名對象用完之後自動釋放不會占用內存呢?
方法調用結束後,這兩個對象都會被銷毀的,它們的內存空間會被回收。
之所以需要關閉流資源,是為了釋放資源,因為io是操作系統的動作,例如如果沒有關閉,那麼這個IO資源就一直被java進程占用,知道java應用結束,這期間操作系統的其他進程就不能訪問該IO資源了。
如果你在java代碼中訪問某個記事本文件,此時你再直接打開該文件,可能就不能打開或者數據不是最新的信息。