【问题标题】:Move first line of .txt file add to last line移动 .txt 文件的第一行添加到最后一行
【发布时间】:2017-05-08 19:02:02
【问题描述】:

我有 a.txt 列表试图将第一行移动到 Java 中的最后一行

我找到了执行以下操作的脚本

  1. 从输入文件中查找“文本”并输出到临时文件。 (我可以设置 "text" 到字符串 buffRead.readLine ??) 然后...
  2. 删除 orig 文件并将新文件重命名为 orig?

请告诉我,我是 Java 新手,但我做了很多研究,但找不到我认为的简单脚本的解决方案。

【问题讨论】:

  • 读取第一行并将其存储到一个字符串中,然后读取文件的其余部分,将每一行输出到新文件。最后,将第一行写在新文件的末尾。很简单,你可以及时回家吃玉米片。

标签: java bufferedreader bufferedwriter


【解决方案1】:

因为这是 Java 并且涉及文件 IO,所以这是一个重要的设置。算法本身很简单,但这样做所需的符号并不是很明显。

BufferedReader reader = new BufferedReader(new FileReader("fileName"));

这使您可以轻松读取文件fileName 的内容。

PrintWriter writer = new PrintWriter(new FileWriter("fileName"));

这为您提供了一种写入文件的简单方法。当您使用 PrintWriter 时,执行此操作的 API 与 System.out 完全相同,因此我选择在这里使用一个。

此时读取文件并以正确的顺序回显它是一件简单的事情。

String text = reader.readLine();

这会将文件的第一行保存到text

while (reader.ready()) {
    writer.println(reader.readLine());
}

reader 中还有文本时,将这些行打印到writer

writer.println(text);

打印您在开始时保存的行。

请注意,如果您的程序执行其他操作(无论如何这只是一个好习惯),您需要关闭 IO 流以避免资源泄漏。

reader.close();
writer.close();

或者,您也可以将整个内容包装在 try-with-resources 中以自动执行相同的清理。

【讨论】:

    【解决方案2】:
    Scanner fileScanner = new Scanner(myFile);
    fileScanner.nextLine();
    

    这将从文件中返回第一行文本并将其丢弃,因为您不会将其存储在任何地方。 覆盖现有文件:

    FileWriter fileStream = new FileWriter("my/path/for/file.txt");
    BufferedWriter out = new BufferedWriter(fileStream);
    while(fileScanner.hasNextLine()) {
        String next = fileScanner.nextLine();
        if(next.equals("\n") out.newLine();
        else out.write(next);
        out.newLine();   
    }
    out.close();
    

    请注意,您必须以这种方式捕获和处理一些IOExceptions。此外,if()...else()... 语句在 while() 循环中是必要的,以保留文本文件中存在的任何换行符。

    将同一行添加到此文件的最后一行查看此链接https://stackoverflow.com/a/37674446/6160431

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-18
      相关资源
      最近更新 更多