【问题标题】:How to move up lines in a .txt file with BufferedReader?如何使用 BufferedReader 在 .txt 文件中向上移动行?
【发布时间】:2023-04-07 17:05:01
【问题描述】:

为我参加的 CS 课程制作“汇编”程序。它具有 ADD、SET、INC(增量)和 JIG 等功能。现在,我们正在输入一个具有以下布局的 .txt 文件(例如):

注意:A 和 B 只是整数,它们在整个程序中存储值,并在到达文本文件末尾时打印出值。

INC A    (increments A by 1)
SET B 5   (set's B's value to 5)
INC B
ADD A 3  (add's 3 to A's current value)
JIG B -4 (move's backward 4 lines, so back to INC A)

所以我很困惑如何将我的 BufferedReader 移回 4 行? BufferedReader 中是否有一种方法可以让您将其移动到某个索引/位置?否则,我还能如何做到这一点?

【问题讨论】:

    标签: java io


    【解决方案1】:

    最简单的做法是将行存储在数组或列表中。

    List<String> lines = Files.readAllLines(Paths.get("myfile.txt"));
    

    这将允许您随机前进到任何一行。

    要获取任何行,您可以使用lines.get(n) 例如您可以这样做

    int pointer = 0;
    for(boolean running = true; running && pointer < lines.size(); ) {
       String line = lines.get(pointer);
       String[] parts = line.split(" +");
       switch(part[0]) {
          case "JMP":
              pointer += Integer.parseInt(parts[1]); // jump back or forth.
              continue;
          case "HALT":
              running = false;
              break;
          // other instructions
       }
       pointer++;
    }
    

    【讨论】:

    • @HovercraftFullOfEels 它需要返回一个列表。但你是对的。
    • 感谢您的快速回复,彼得!但是,是否可以传入文件而不是字符串(“myfile.txt”)?因为我的程序编写方式我使用: FileInputStream instream = new FileInputStream(file); reader = new BufferedReader(new InputStreamReader(instream));
    • 你可以得到Paths.get(file.toString())
    • 感谢编译。现在我该如何实施这项技术?如何使用它来检索某些行?谢谢。
    • @bobafro 您使用代码指针查找列表,我添加了一个示例。
    猜你喜欢
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 2011-06-02
    • 2018-07-18
    • 2021-11-20
    • 1970-01-01
    相关资源
    最近更新 更多