• 封装了集中常用的文件读的方法


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

    }

  • 相关阅读:
    中国石油大学天梯赛真题模拟第三场
    中国石油大学天梯赛真题模拟第一场
    PTA 水果忍者
    演练3-1:留言管理系统的制作
    知识点4-1:哪些应该放在动作方法中?
    Week5(10月11日):国庆后补课的复杂心情
    知识点3-5:使用强类型模板
    Week5(10月10日):国庆之后,让我们整装期待元旦吧
    知识点3-6:HTML辅助方法
    知识点3-4:给视图传递数据
  • 原文地址:https://www.cnblogs.com/chinaifae/p/10254640.html
Copyright © 2020-2023  润新知