码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-01-11 13:40:47      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:input   file   sla   byte   nts   ace   output   while   ati   

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

}

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

标签:input   file   sla   byte   nts   ace   output   while   ati   

原文地址:https://www.cnblogs.com/chinaifae/p/10254640.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!