Close ReversedLinesFileReader

This commit is contained in:
mpollack
2014-01-30 18:18:07 -05:00
parent 7123eae85a
commit 08357d2c28

View File

@@ -183,12 +183,13 @@ public abstract class JLineShell extends AbstractShell implements Shell, Runnabl
*/
private String[] filterLogEntry() {
ArrayList<String> entries = new ArrayList<String>();
ReversedLinesFileReader reversedReader = null;
try {
ReversedLinesFileReader reader = new ReversedLinesFileReader(new File(getHistoryFileName()), 4096,
reversedReader = new ReversedLinesFileReader(new File(getHistoryFileName()), 4096,
Charset.forName("UTF-8"));
int size = 0;
String line = null;
while ((line = reader.readLine()) != null) {
while ((line = reversedReader.readLine()) != null) {
if (!line.startsWith("//")) {
size++;
if (size > historySize) {
@@ -202,11 +203,24 @@ public abstract class JLineShell extends AbstractShell implements Shell, Runnabl
}
catch (IOException e) {
logger.warning("read history file failed. Reason:" + e.getMessage());
} finally {
closeReversedReader(reversedReader);
}
Collections.reverse(entries);
return entries.toArray(new String[0]);
}
private void closeReversedReader(ReversedLinesFileReader reversedReader) {
if (reversedReader != null) {
try {
reversedReader.close();
} catch (IOException ex) {
logger.warning("Cloud not close ReversedLinesFileReader: " + ex);
}
}
}
/**
* Creates new jline ConsoleReader. On Windows if jansi is available, uses createAnsiWindowsReader(). Otherwise,
* always creates a default ConsoleReader. Sub-classes of this class can plug in their version of ConsoleReader by