code: public static boolean copyFile(String srcFile, String destFile) {
  		boolean flag = false;
  		FileInputStream fin = null;
  		FileOutputStream fout = null;
  		FileChannel fcin = null;
  		FileChannel fcout = null;
  		try {
  			// 获取源文件和目标文件的输入输出流
  			fin = new FileInputStream(srcFile);
  			fout = new FileOutputStream(destFile);
  			// 获取输入输出通道
  			fcin = fin.getChannel();
  			fcout = fout.getChannel();
  			// 创建缓冲区
  			ByteBuffer buffer = ByteBuffer.allocate(1024);
  			while (true) {
  				// clear方法重设缓冲区，使它可以接受读入的数据
  				buffer.clear();
  				// 从输入通道中将数据读到缓冲区
  				int r = fcin.read(buffer);
  				// read方法返回读取的字节数，可能为零，如果该通道已到达流的末尾，则返回-1
  				if (r == -1) {
  					flag = true;
  					break;
  				}
  				// flip方法让缓冲区可以将新读入的数据写入另一个通道
  				buffer.flip();
  				// 从输出通道中将数据写入缓冲区
  				fcout.write(buffer);
  			}
  			fout.flush();
  		} catch (IOException e) {
  			LogUtil.writeErrorLog("CopyFile fail", e);
  		} finally {
  			try {
  				if (null != fin)
  					fin.close();
  				if (null != fout)
  					fout.close();
  				if (null != fcin)
  					fcin.close();
  				if (null != fcout)
  					fcout.close();
  			} catch (IOException ex) {
  				LogUtil.writeErrorLog("Releases any system resources fail", ex);
  			}
  		}
  		return flag;
  	}
docs: 文件拷贝方法
  
  @param srcFile
  源文件
  @param destFile
  目标文件
  @return
  @throws IOException