2016-12-23 79 views
1

a.txt列表试图到第一线移动到最后一行在Java中移动.txt文件的第一行到最后一行

我发现脚本来完成以下

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

请给我我是新来的Java,但我做了大量的研究,无法找到我认为是一个简单的脚本的解决方案。

+4

阅读的第一行,并存储为一个字符串,然后读取文件的其余部分,各行输出到新文件。最后,在新文件的末尾写上第一行。很简单,你准时回家吃玉米片。 –

回答

3

因为这是Java和关注文件IO,这是一个不平凡的设置。算法本身很简单,但所需的符号并不是立即可见的。

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

writer.println(text); 

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

需要注意的是,如果你的程序做任何东西(它只是一个良好的习惯是这样),你要关闭你的IO流,以避免泄漏资源。

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

或者,你也可以包住整个事情的try-with-resources自动执行相同的清洁。

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

相关问题