JAVA实现文本文件的倒序转储

本文探讨了四种不同的Java实现方式来对文本文件进行倒序转储,包括使用BufferedReader和BufferedWriter、分片处理大数据量文件、FileChannel以及RandomAccessFile。针对大数据文件,文章提出了分片和合并的策略,以避免内存溢出,并在最后讨论了各种方法在性能和适用场景上的差异。
摘要由CSDN通过智能技术生成

描述:对文本文件倒序转储,文本行顺序倒序,文字正序,保留原文件,新文件行顺序倒序

版本一

使用BufferedReader读取

可选择使用ArraryList进行内存存储及倒序操作,也可使用LinkedList头插法直接在List中达到想要的顺序,性能的话当然还是ArraryList快,看各自需求使用吧

使用BufferedWriter写入目标文件即可

缺点:

无法针对大数据量文件读取

容易造成oom

有兴趣可在idea中调整JVM堆属性感受一下

public class FileReadAndWrite {

    public static final String PATH = "E:\\ideaworkspace\\yld_test\\pg_test\\src\\main\\resources\\";


    public static void main(String[] args) throws IOException {
        List<String> list = fileRead("test.txt");
        fileWrite("rs.txt", list);
    }

    /**
     * 读取文件
     *
     * @param name 读取文件名称
     * @return list 按行逆序文件数据
     * @throws IOException
     */
    public static List<String> fileRead(String name) throws IOException {
        //读取文件
        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(PATH + name), "utf-8"));
        String b = "";
        List<String> list = new LinkedList<>();
        while ((b = br.readLine()) != null) {
            //头插法
            ((LinkedList<String>) list).addFirst(b);
        }
        System.out.println("读取成功");
        return list;
    }

    /**
     * 写入文件
     *
     * @param name 写入文件名称
     * @param list 写入文件数据
     * @throws IOException
     */
    public static void fileWrite(String name, List<String> list) throws IOException {
        //写入文件
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(PATH + name), "utf-8"));
        for (String s : list) {
            bw.write(s + "\n");
        }
        bw.flush();
        System.out.println("写入成功");
    }
}

版本二

针对大数据量GB级别,考虑到oom问题,那既然内存放不下我就找磁盘咯

对来源文件分片,

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值