将一个文本文档上的文本反转,第一行和倒数第一行交换,第二行和倒数第二行交换
package com.heima.demo;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
public class Demo5 {
/**
* 将一个文本文档上的文本反转,第一行和倒数第一行交换,第二行和倒数第二行交换
* 分析
* 1,创建输入输出流对象 正行之间的交换 所以我们用到的是 BufferedReader和Bufferedwriter
* 2,得到的数据临时存数 在倒着变遍历就可以 所以创建集合对象 将数据临时存储 倒着遍历
* 3,将数据临时存储在集合当中
* 4,倒着遍历集合 将数据写到文件上
* 5,关流
* 注意事项:
* 流对象 尽量 晚开 早关
* @throws IOException
*/
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("xxx.txt"));
//创建结合对象 对象是String 类型 一行的字符串
ArrayList<String > list = new ArrayList<>();
//将数据存储在集合当中 也就是 读取 文件
String line ;
while((line = br.readLine()) != null){ //次处是字符串 所以当集合中没有字符串的时候返回的是null而不是 -1
//添加到 集合中 list
list.add(line);
}
br.close();//在这里 br 读取文件使用完毕就应该 在这里 关流
//晚开 早关 的 原则
BufferedWriter bw = new BufferedWriter(new FileWriter("yyy.txt"));
//遍历集合 并将文件写到文件上 遍历是倒着遍历
for (int i = list.size()-1 ; i >= 0; i--) { //注意这里的size是要减一的
//将集合写到文件上
bw.write(list.get(i));
bw.newLine();
}
//关流
//br.close(); //关流 不用了就要关掉 所以这个用在这里不合适 下上移动
bw.close();
}
}
|