java怎么逐行读取一个文件内容,并把每行顺序打乱存入另外一个文件中

java读入文件,并逐行输出,先在项目中建立个 "a "文件夹,然后创建一个a.txt文件,然后编辑文件,文本编辑的编码是utf-8,然后用流逐行读取输出,然后打乱每行顺序,再存放到b.txt文件中,如下:

package fileDao;

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;


public class demo {

    public static void main(String[] args){
        //获取要读取的文件
        File readFile=new File("a/a.txt");
        //获取要写入到的文件
        File outFile=new File("a/b.txt");
        //输入IO流声明
        InputStream in=null;
        InputStreamReader ir=null;
        BufferedReader br=null;

        //输出IO流说明
        OutputStream os=null;
        OutputStreamWriter osw =null;
        BufferedWriter bw=null;

        try {
            //用流读取文件
            in=new BufferedInputStream(new FileInputStream(readFile));
            os=new BufferedOutputStream(new FileOutputStream(outFile));
            //如果你文件已utf-8编码的就按这个编码来读取,不然又中文会读取到乱码
            ir=new InputStreamReader(in,"utf-8");
            osw=new OutputStreamWriter(os,"utf-8");
            //字符输入流中读取文本,这样可以一行一行读取
            br= new BufferedReader(ir);
            bw=new BufferedWriter(osw);

            String line="";
            ArrayList<String> arrayList=new ArrayList<>();

            //一行一行读取
            while((line=br.readLine())!=null){
                System.out.println(line);
                //存入到集合中,一行为一个元素
                arrayList.add(line);
            }
            System.out.println("=======================");
            //打乱集合的元素
            Collections.shuffle(arrayList);
            //遍历集合,并输出一下,跟一行一行的写入到b.txt文件中
            for (String s : arrayList) {
                System.out.println(s);
                bw.write(s);
                bw.newLine();
            }

        } catch (Exception e) {

            e.printStackTrace();
        }finally{
            //一定要关闭流,倒序关闭
            try {

                if(br!=null){
                    br.close();
                }
                if(ir!=null){
                    ir.close();
                }
                if(in!=null){
                    in.close();
                }
                if(bw!=null){
                    bw.close();
                }
                if(osw!=null){
                    osw.close();
                }
                if(os!=null){
                    os.close();
                }
            } catch (Exception e2) {

            }

        }

    }


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值