都说java的NI/O很快,我也不知道快不快 没做测试没有发言权。网上剽窃了一段代码。贴上。感觉还可以。
/**
* @Title: FileTransfer.java ,By gumutianqi at 2011-2-24上午11:16:18
* @version: 1.0
*
* @Description : this is you mark
* @Company: Copyright (c) 2011 AOSA TECH Ltd. All right reserved
* @Project: SafeMedia
*
*/
package aosa.safemedia;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
/**
* @Title FileTransfer
* @author yangtao at 2011-3-9下午04:34:36
* @Description 文件传输类
*/
public class FileTransfer {
// 要传输的文件
private File file;
// 文件传输的进度
private int fileOffset;
// 每次文件传输的大小。
private static int size = 1024 * 8;
public FileTransfer() {
}
/**
* @param source源文件
* 。target目的文件。
* @Description 传输文件。
*/
public void transFile(File source, File target) {
try {
//ByteBuffer byteBuffer = ByteBuffer.allocate(size);
FileInputStream fileInputStream = new FileInputStream(source);
FileOutputStream fileOutputStream = new FileOutputStream(target);
FileChannel fileInputChannel = fileInputStream.getChannel();
FileChannel fileOutputChannel = fileOutputStream.getChannel();
while (true) {
if (fileInputChannel.position() == fileInputChannel.size()) {
fileInputChannel.close();
fileOutputChannel.close();
return;
}
if (fileInputChannel.size() - fileInputChannel.position() < size) {
size = (int) (fileInputChannel.size() - fileInputChannel
.position());
}
fileInputChannel.transferTo(fileInputChannel.position(), size, fileOutputChannel);
fileInputChannel.position(fileInputChannel.position() + size);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* @param sourceFilePath
* 源文件路径
* @param targetFilePath
* 目标文件路径
* @Description 根据文件路径获得文件然后用于传输。
*/
public void transFile(String sourceFilePath, String targetFilePath) {
File source = new File(sourceFilePath);
File target = new File(targetFilePath);
transFile(source, target);
}
public static void main(String[] args) {
FileTransfer transfer = new FileTransfer();
transfer.transFile("F:\\sharesrc\\1.png", "F:\\sharedest\\1.png");
}
}
代码还有点不完善,还得修改修改。