我有一个程序使用BufferedReader
读取CSV文件的第一行和最后一行,现在我需要将其转换为读取第一行和最后8行行文件,因为格式已更改。但我不确定如何表示最后8行。
如何(我可以)使用BufferedReader
try(BufferedReader reader = new BufferedReader(
new InputStreamReader(
response.getEntity().getContent()))) {
if(reader != null){
String aux = "";
String lastLineMinusOne = "";
while ((aux = reader.readLine()) != null) {
String auxTrimmed = aux.replaceAll("(?m)^[ \t]*\r?\n", "");
if(count == 0)firstLine = auxTrimmed;
lastLineMinusOne = lastLine;
lastLine = auxTrimmed;
count ++;
}
logger.info("Count = " + count);
columns = firstLine.split(",");
data = lastLine.split(",");
答案 0 :(得分:3)
只需使用Deque
,如果尺寸超过8
,则将其删除。
由于队列为FIFO
,如果使用remove()
,则只保留最近的8个条目。
Deque<String> queue=new ArrayDeque<String>();
String line;
while ((aux = reader.readLine()) != null){
if(queue.size()>=8){
queue.remove();
}
queue.add(aux);
}
System.out.println(queue.size());//should print 8