zoukankan      html  css  js  c++  java
  • 封装了集中常用的文件读的方法

    package com.opslab.util.algorithmImpl;

    import java.io.*;
    import java.nio.ByteBuffer;
    import java.nio.channels.FileChannel;

    /**
    * 封装了集中常用的文件读的方法
    */
    public class FileReadImpl {

    /**
    * 利用FileChannel直接实现文件的对拷,对于大文件速度特别明显
    *
    * @param source
    * @param target
    */
    public static void copyFileWithChannel(File source, File target) {
    try (
    FileInputStream inStream = new FileInputStream(source);
    FileOutputStream outStream = new FileOutputStream(target);
    FileChannel in = inStream.getChannel();
    FileChannel out = outStream.getChannel();
    ) {
    in.transferTo(0, in.size(), out);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    /**
    * 使用FileChannel+Buffer实现文件的读取拷贝是一种极佳的方案
    *
    * @param source
    * @param target
    */
    public static void copyFileWithBuffer(File source, File target) {
    try (
    FileInputStream inStream = new FileInputStream(source);
    FileOutputStream outStream = new FileOutputStream(target);
    FileChannel in = inStream.getChannel();
    FileChannel out = outStream.getChannel()
    ) {
    ByteBuffer buffer = ByteBuffer.allocate(4096);
    while (in.read(buffer) != -1) {
    buffer.flip();
    out.write(buffer);
    buffer.clear();
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    /**
    * 利用Buffer实现文件的读取拷贝
    *
    * @param source
    * @param target
    */
    public static void customBufferBufferedStreamCopy(File source, File target) {
    try (
    InputStream fis = new BufferedInputStream(new FileInputStream(source));
    OutputStream fos = new BufferedOutputStream(new FileOutputStream(target))
    ) {
    byte[] buf = new byte[4096];
    int i;
    while ((i = fis.read(buf)) != -1) {
    fos.write(buf, 0, i);
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    /**
    * 利用Buffer实现文件的读取拷贝
    *
    * @param source
    * @param target
    */
    public static void customBufferStreamCopy(File source, File target) {
    try (
    InputStream fis = new FileInputStream(source);
    OutputStream fos = new FileOutputStream(target);
    ) {
    byte[] buf = new byte[4096];
    int i;
    while ((i = fis.read(buf)) != -1) {
    fos.write(buf, 0, i);
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    }

  • 相关阅读:
    Maven介绍
    自考:计算机网络原理 2018版 李全龙 课后习题答案
    jmeter分布式部署遇到的坑
    mysql循环 insert插入多条数据
    认识Nacos.
    mysql中where子句中使用别名查询出现问题
    python之bytes和string相互转换
    什么叫线圈?什么寄存器?什么叫保持寄存器?
    Modbus-RTU详解(转载)
    python进制之间的转换函数
  • 原文地址:https://www.cnblogs.com/chinaifae/p/10254640.html
Copyright © 2011-2022 走看看