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

    }

  • 相关阅读:
    C#发送邮件
    C# MD5加密
    html实现艺术字
    sql日期转换比较问题
    web 抓取
    NHibernate主要数据操作方法
    写日志
    备忘 sql分页
    自我介绍
    企业级应用和互联网应用的区别
  • 原文地址:https://www.cnblogs.com/chinaifae/p/10254640.html
Copyright © 2011-2022 走看看