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

    }

  • 相关阅读:
    On the fly test
    Spec Explorer 工具学习
    C# Static修饰符的作用
    [转]C#静态方法与非静态方法的比较
    如何获取网站服务器运行状态
    C#快速整理代码格式
    UI auto程序结构组织方式
    TestClass必须是public的
    VS2012如何显示行号
    Error: member names cannot be the same as their enclosing type
  • 原文地址:https://www.cnblogs.com/chinaifae/p/10254640.html
Copyright © 2011-2022 走看看