A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

将一个文本文档上的文本反转,第一行和倒数第一行交换,第二行和倒数第二行交换


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();
        }

}





评分

参与人数 1黑马币 +3 收起 理由
魁子 + 3 很给力!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马