移动.txt文件的第一行添加到最后一行

时间:2016-12-23 04:35:54

标签: java bufferedreader bufferedwriter

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

我发现脚本可以执行以下操作

  1. 从输入文件中查找“text”并输出到临时文件。 (我可以设定 “text”到字符串buffRead.readLine ??)然后......
  2. 删除原始文件并将新文件重命名为orig?
  3. 请告诉我,我是Java的新手,但是我已经做了很多研究,无法找到我认为简单的脚本的解决方案。

2 个答案:

答案 0 :(得分:3)

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

private void UploadProgessEvent(Google.Apis.Upload.IUploadProgress obj)
{
    label1.Text = ((obj.ByteSent*100)/TotalSize).ToString() + "%";

    // update your ProgressBar here
}

这使您可以轻松地阅读文件BufferedReader reader = new BufferedReader(new FileReader("fileName")); 的内容。

fileName

这为您提供了一种写入文件的简单方法。当您使用PrintWriter writer = new PrintWriter(new FileWriter("fileName")); 时,执行此操作的API与System.out完全相同,因此我选择在此处使用。

此时,只需读取文件并以正确的顺序回显即可。

PrintWriter

这会将文件的第一行保存到String text = reader.readLine();

text

虽然while (reader.ready()) { writer.println(reader.readLine()); } 中还有文字,但请将这些行打印到reader

writer

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

请注意,如果您的程序执行其他任何操作(并且它只是一个好习惯),您希望关闭IO流以避免资源泄漏。

writer.println(text);

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

答案 1 :(得分:1)

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