【问题标题】:How can I read lines from a inputted file and then store the most recently read lines in an array?如何从输入的文件中读取行,然后将最近读取的行存储在数组中?
【发布时间】:2017-08-02 18:23:41
【问题描述】:

我正在尝试创建一个程序,该程序接受输入的文本文件并逐行读取。然后它需要将最近读取的行(行数取决于参数行)存储在一个数组中,然后我需要使用 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 打印任何内容。)

【问题讨论】:

  • 为什么在while循环中使用for循环?只需使用一个循环来遍历输入文件

标签: java arrays buffer printwriter reader


【解决方案1】:

试试这个:

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;
         } 
    }

【讨论】:

  • r3ader.hasNextLine() 不是必需的,因为到达文件末尾时r3ader.readLine() 将返回null
【解决方案2】:

听起来像是数据结构的任务。队列似乎最适合给定任务。

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));
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    • 1970-01-01
    相关资源
    最近更新 更多