我正在尝试创建一个程序,该程序接受输入的文本文件并逐个读取行。然后它需要在数组中存储最近读取的行(行数取决于参数行),然后我需要使用PrintWriter打印行。
我开始了第一部分,但我不确定我是否有正确的想法。如果有人可以在第二部分帮助我,那将非常感激!
public void RecentLines(Reader in, Writer out, int lines) throws IOException {
BufferedReader r3ader = new BufferedReader(in);
String str;
while((str = r3ader.readLine()) != null){
String[] arr = str.split(" ");
for( int i =0; i < lines; i++){
arr[i] = r3ader.readLine();
}
}
编辑
完整的问题是:
创建一个程序,从IN读取行,一行直到结束。您的方法必须维护一个内部缓冲区,用于存储最近读取的行(这可能最好使用数组完成)。一旦方法到达文件的末尾,它应该将存储在内部缓冲区中的行打印出来,最好通过创建一个PrintWriter来装饰这个Writer。 (除了在开发阶段进行调试之外,此方法不应向System.out打印任何内容。)
答案 0 :(得分:0)
试试这个:
public void RecentLines(Reader in, Writer out, int lines) throws IOException {
BufferedReader r3ader = new BufferedReader(in);
String str;
int i=0;
String[] lineArray = new String[lines];
while((str = r3ader.readLine()) != null){
lines[i%lines] = str;
i++;
if(!r3ader.hasNextLine()){
break;
}
}
答案 1 :(得分:0)
听起来像是数据结构的任务。队列似乎是最适合给定任务的。
public void RecentLines(Reader in, Writer out, int lines) throws IOException {
BufferedReader r3ader = new BufferedReader(in);
BufferedWriter wout = new BufferedWriter(out);
String str;
Queue<String> content = new LinkedList<String>();
int i = 0;
while ((str = r3ader.readLine()) != null) {
if (i >= lines) {
content.remove();
}
content.add(str);
i++;
}
wout.write(String.valueOf(content));
}