`
huzhenyu
  • 浏览: 185316 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

两段copy文件的代码

    博客分类:
  • JAVA
阅读更多
1.传统的基于IO的Copy方法
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class Snippet {
	public static void copyFile(File source, File dest) throws IOException {
		if (!dest.exists()) {
			dest.createNewFile();
		}
		InputStream in = null;
		OutputStream out = null;
		try {
			in = new FileInputStream(source);
			out = new FileOutputStream(dest);

			// Transfer bytes from in to out
			byte[] buf = new byte[1024];
			int len;
			while ((len = in.read(buf)) > 0) {
				out.write(buf, 0, len);
			}
		} finally {
			if (in != null) {
				in.close();
			}
			if (out != null) {
				out.close();
			}
		}
	}
}

2.基于NIO的高效的Copy方法
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;

public class Snippet {

	public static void copyFile(File sourceFile, File destFile) throws IOException {
		if (!destFile.exists()) {
			destFile.createNewFile();
		}

		FileChannel source = null;
		FileChannel destination = null;
		try {
			source = new FileInputStream(sourceFile).getChannel();
			destination = new FileOutputStream(destFile).getChannel();
			destination.transferFrom(source, 0, source.size());
		} finally {
			if (source != null) {
				source.close();
			}
			if (destination != null) {
				destination.close();
			}
		}
	}
}
分享到:
评论

相关推荐

    如何编写批处理文件批处理文件批处理文件

    然后if语句将作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,文件结束。...

    代码语法错误分析工具pclint8.0

    2.将c:\pclint\lnt 下的3个文件lib-w32.lnt,env-vc6.lnt,co-msc60.lnt拷贝至c:\pclint下, 再在安装目录下创建std.lnt和options.lnt两个文件,其中std.lnt的内容如下 // contents of std.lnt c:\pclint\co-msc60...

    SVN客户端用户使用手册

    在Creat copy in the repository from中,可以选择分支文件是由soc_1的那一个版本拷贝来的。最后填写日志,选择OK。 图8 分支创建完毕,Updata版本库,系统会将soc_1的主干文件和分支文件soc_1_branch同时下载到...

    C#导出网站功能实例代码讲解

     下面这段代码就是通过javascript的Request函数调用copy.ashx函数文件,实现将需要复制的文件夹的子路径和复制到所在位置的子路径的两个参数传进去后台函数getWebList函数就是后台的一个函数,这个函数可以不用管他...

    SoftwarePassport Armadillo V9.20

     Armadillo会把程序中的部分代码挪移到壳申请的内存段运行,普通dump会导致此部分代码丢失,可以使用ArmInline工具来修复这部分代码 4、内存校验  内存补丁保护可以防止攻击者使用Loader改变更程序的代码。这是...

    windows蓝屏错误代码

    266 0×0000010A 无法使用 Copy API。 267 0×0000010B 目录名称错误。 275 0×00000113 延伸属性不适用于缓冲区。 276 0×00000114 在外挂的档案系统上的延伸属性档案已经毁损。 277 0×00000115 延伸属性表格文件...

    本资源分为两个压缩包,请注意:TCP-IP详解卷2:实现(2)

    本资源分为两个压缩包,请注意:TCP-IP详解卷2:实现(2) 本书完整而详细地介绍了TCP/IP协议是如何实现的。书中给出了约500个图例,15 000行实际操作的C代码,采用举例教学的方法帮助你掌握TCP/IP实现。本书不仅说明...

    MyFll Microsoft Visual FoxPro设计的扩展库

    CopyFiles 复制文件 MoveFiles 移动文件 DeleteFiles 删除文件 CreateShortcut 创建快捷方式 GetIcon 释放exe或dll中的图标 其它: SetVFPEvents 设置MYFLL内部函数回调功能 SetDateTime 设置Windows...

    最新Hadoop的面试题总结

    (2)Merge阶段:在远程拷贝数据的同时,ReduceTask启动了两个后台线程对内存和磁盘上的文件进行合并,以防止内存使用过多或磁盘上文件过多。 (3)Sort阶段:按照MapReduce语义,用户编写reduce()函数输入数据是按...

    TQ2440下keil测试程序

    编译器生成以后, 标号copy_proc_beg对应的地址是0x3*******, 也就是在SDRAM里面, 然后你在运行前4k的程序的时候PC指针的内容是0x00000***, 完成之前说的代码从nand flash到SDRAM的搬移工作后, 用一条 ldr pc, =copy_...

    uboott移植实验手册及技术文档

    nand_init()函数在两个文件中实现。其调用与 CFG_NAND_LEGACY 宏有 关,如果没有定义这个宏,系统调用 drivers/nand/nand.c 中的 nand_init();否则调用自己在 本文件中的 nand_init()函数,本例使用后者。fs2410.c...

    Linux高级bash编程

    在一个文本文件的段间插入空行 9-11. 利用修改文件名,来转换图片格式 9-12. 模仿getopt命令 9-13. 提取字符串的一种可选的方法 9-14. 使用参数替换和error messages 9-15. 参数替换和"usage"messages 9-16. 变量...

    Advanced Bash-Scripting Guide <>

    在一个文本文件的段间插入空行 9-11. 利用修改文件名,来转换图片格式 9-12. 模仿getopt 命令 9-13. 提取字符串的一种可选的方法 9-14. 使用参数替换和error messages 9-15. 参数替换和"usage"messages 9-16. 变量...

    TCP/IP详解 (卷2:实现)

    开始我们先看一段源代码并介绍一些通篇要用的印刷约定。对各种不同代码版本的简单历史回顾让我们可以看到本书中的源代码处于什么位置。接下来介绍了两种主要的编程接口,它们在Unix与非Unix系统中用于编写TCP/IP协议...

    windows用户称拦截api

    而对于第三个参数PAGE_WRITECOPY顾名思义就是写入时拷贝,任何向这段内存写入的操作(因为文件是映射到进程地址空间的,对这段空间的读写就相当于对文件进行的直接读写)都将被系统捕获,并重新在你的虚拟地址空间重新...

    delphi 开发经验技巧宝典源码

    0095 使用Length函数取得一段字符串的长度 65 0096 使用Pos函数返回子字符串第一次出现的索引值 66 0097 使用Quotedstr函数返回字符串的引证串 66 0098 使用Trim函数删除字符串的首尾空格 66 4.2 数学计算...

    jquery插件使用方法大全

    下面一段代码: 代码 $(document).ready(function(){ alert&#40;"hello"&#41;; });(1) &lt;body&gt;(2) &lt;body&gt;这里的alert&#40;'hello'&#41;;要等到页面全部加载完毕才执行,注意是全部加载,包括dom,图片等...

    delphi 开发经验技巧宝典源码06

    0095 使用Length函数取得一段字符串的长度 65 0096 使用Pos函数返回子字符串第一次出现的索引值 66 0097 使用Quotedstr函数返回字符串的引证串 66 0098 使用Trim函数删除字符串的首尾空格 66 4.2 数学计算...

Global site tag (gtag.js) - Google Analytics