0

作者がストリームLineNumberReaderlnrを閉じない理由を誰かが説明できますか?これは必要ありませんか?

protected static ArrayList<Mount> getMounts() throws Exception{
    LineNumberReader lnr = null;
    lnr = new LineNumberReader(new FileReader("/proc/mounts"));
    String line;
    ArrayList<Mount> mounts = new ArrayList<Mount>();
    while ((line = lnr.readLine()) != null)
    {  
        RootTools.log(line);

        String[] fields = line.split(" ");
        mounts.add(new Mount(new File(fields[0]), // device
            new File(fields[1]), // mountPoint
            fields[2], // fstype
            fields[3] // flags
        ));
    }
    InternalVariables.mounts = mounts;

    if (InternalVariables.mounts != null) {
        return InternalVariables.mounts;
    } else {
        throw new Exception();
    }
}

さらに、以前のバージョンでは次のようになりました。

finally {
    //no need to do anything here.
}

ソースコード

これは間違いですか、それとも詳細ですか?

4

1 に答える 1

1

オブジェクトが範囲外になると GC によってオブジェクトが削除され、ティアダウン プロセスによってオブジェクトが閉じられる可能性があるため、技術的には必要ありません。念のため、開いている I/O ストリームを閉じることをお勧めします。

于 2012-11-06T16:47:24.943 に答える