FileUtil .java import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.nio.ByteBuffer;import java.nio.MappedByteBuffer;import java.nio.channels.FileChannel;/** *//** * @author lichun * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */public class FileUtil ...{ public static ByteBuffer readFile(String filename) throws Exception ...{ FileChannel fiChannel = new FileInputStream(filename).getChannel(); MappedByteBuffer mBuf; mBuf = fiChannel.map(FileChannel.MapMode.READ_ONLY, 0, fiChannel.size()); fiChannel.close(); fiChannel = null; return mBuf; } public static void saveFile(ByteBuffer src, String filename) throws Exception ...{ FileChannel foChannel = new FileOutputStream(filename).getChannel(); foChannel.write(src); foChannel.close(); foChannel = null; } public static void saveFile(FileChannel fiChannel, String filename) throws IOException ...{ MappedByteBuffer mBuf; mBuf = fiChannel.map(FileChannel.MapMode.READ_ONLY, 0, fiChannel.size()); FileChannel foChannel = new FileOutputStream(filename).getChannel(); foChannel.write(mBuf); fiChannel.close(); foChannel.close(); fiChannel = null; foChannel = null; } public static void main(String[] args) throws Exception ...{ final String suffix = ".txt"; final String filename = "bufferTemp"; final String srcFile = filename + suffix ; final String backupFile = filename + "-" + System.currentTimeMillis() + suffix; ByteBuffer byteBuffer = FileUtil.readFile(srcFile); FileUtil.saveFile(byteBuffer, backupFile); byteBuffer = null; }} TransferFile.java import java.io.FileInputStream;import java.io.FileNotFoundException;import java.nio.ByteBuffer;import java.nio.channels.FileChannel;import java.util.*;/** *//** * @author lichun * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */public class TransferFile ...{ private String srcFile; List files = new ArrayList(); ByteBuffer byteBuffer; public TransferFile() ...{ createFileNames(); } private void createFileNames() ...{ for (int i = 0; i < 10; i++) ...{ files.add(i + ""); } } public List getFiles() ...{ return this.files; } public String getSrcFile() ...{ return srcFile; } public void setSrcFile(String srcFile) ...{ this.srcFile = srcFile; } public void saveFiles() throws FileNotFoundException ...{ String tempFile; for (int i = 0; i < this.files.size(); i++) ...{ tempFile = "test-files/" + (String)files.get(i) + ".txt"; System.out.println("begin create thread for " + tempFile); FileChannel fiChannel = new FileInputStream(this.srcFile).getChannel(); WriteFileThread writeFileThread = new WriteFileThread("writeFile", fiChannel, tempFile); writeFileThread.start(); } } public static void main(String[] args) throws Exception ...{ final String srcFile = "test-files/transferFile.txt"; TransferFile transferFile = new TransferFile(); transferFile.setSrcFile(srcFile); transferFile.saveFiles(); }} WriteFileThread.java import java.nio.channels.FileChannel;/** *//** * @author lichun * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */public class WriteFileThread extends Thread ...{ private FileChannel fiChannel; private String fileName; public WriteFileThread(String name) ...{ super(name); } public WriteFileThread(String name, FileChannel fiChannel, String fileName) ...{ this(name); this.fiChannel = fiChannel; this.fileName = fileName; } public void setFiChannel(FileChannel fiChannel) ...{ this.fiChannel = fiChannel; } public FileChannel getFiChannel() ...{ return fiChannel; } public void setFileName(String fileName) ...{ this.fileName = fileName; } public String getFileName() ...{ return fileName; } public void run() ...{ System.out.println("in Thread: " + this.getName()); try ...{ FileUtil.saveFile(this.fiChannel, this.fileName); } catch (Exception e) ...{ System.out.println("The file is not founded: " + fileName); e.printStackTrace(); } System.out.println("end Thread: " + this.getName()); }}