不考虑多线程优化,单线程文件复制最快的方法是(文件越大该方法越有优势,一般比常用方法快30+%):
- private static void nioTransferCopy(File source, File target) {
- FileChannel in = null;
- FileChannel out = null;
- FileInputStream inStream = null;
- FileOutputStream outStream = null;
- try {
- inStream = new FileInputStream(source);
- outStream = new FileOutputStream(target);
- in = inStream.getChannel();
- out = outStream.getChannel();
- in.transferTo(0, in.size(), out);
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- close(inStream);
- close(in);
- close(outStream);
- close(out);
- }
- }
如果需要监测复制进度,可以用第二快的方法(留意buffer的大小,对速度有很大影响):
- private static void nioBufferCopy(File source, File target) {
- FileChannel in = null;
- FileChannel out = null;
- FileInputStream inStream = null;
- FileOutputStream outStream = null;
- try {
- inStream = new FileInputStream(source);
- outStream = new FileOutputStream(target);
- in = inStream.getChannel();
- 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();
- } finally {
- close(inStream);
- close(in);
- close(outStream);
- close(out);
- }
- }
常用的方法1是:
- private static void customBufferBufferedStreamCopy(File source, File target) {
- InputStream fis = null;
- OutputStream fos = null;
- try {
- fis = new BufferedInputStream(new FileInputStream(source));
- 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 (Exception e) {
- e.printStackTrace();
- } finally {
- close(fis);
- close(fos);
- }
- }
常用的方法2是:
- private static void customBufferStreamCopy(File source, File target) {
- InputStream fis = null;
- OutputStream fos = null;
- try {
- fis = new FileInputStream(source);
- fos = new FileOutputStream(target);
- byte[] buf = new byte[4096];
- int i;
- while ((i = fis.read(buf)) != -1) {
- fos.write(buf, 0, i);
- }
- }
- catch (Exception e) {
- e.printStackTrace();
- } finally {
- close(fis);
- close(fos);
- }
- }
相关推荐
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
在使用微软操作系统的SmartPhone上安装软件,有三种方法: 1)直接拷贝法 与电脑类似,在智能手机上也流行"绿色软件"一说。这一类软件只须将相关文件 Copy到手机或存储卡上,然后建立一快捷方式,并将其拖入...
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。 13、sleep() 和 wait() 有什么区别? sleep是线程类(Thread)的...
1、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 56 2、sleep() 和 wait() 有什么区别? 56 3、当一个线程进入一个对象的一个synchronized方法后,其它线程...
零复制在Java和Webflux 此应用程序包含以下代码示例: 演示如何使用带有和不带有零复制机制的JDK API复制文件。 展示了几种在Spring WebFlux中提供静态文件并测量CPU使用率的方法。 毫不奇怪,提供零拷贝的静态文件...
46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 29 47、sleep() 和 wait() 有什么区别? 30 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明...
46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 29 47、sleep() 和 wait() 有什么区别? 30 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明...
51.5. java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 25 52. 数据连接池 25 52.1. 连接池的基本原理: 25 52.2. 连接池的工作机制 25 52.3. 建立连接池 26 ...
46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 29 47、sleep() 和 wait() 有什么区别? 30 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明...
在网上查了一遍以后有如下几种处理办法: 1、没有oracle_home目录的执行权限,无法进入到bin目录,使用chmod 755 $oracle_home更改目录权限;使用chmod 755 $oracle_home/lib更改目录权限;对目录$oracle_home/rdbms...
实例123 复制指定目录下的文件 170 实例124 显示文件中的内容 173 实例125 将数据保存到指定的文件中 175 实例126 将由键盘中录入的信息保存到文件中 176 实例127 一个文件变成多个小文件 178 ...
实例123 复制指定目录下的文件 170 实例124 显示文件中的内容 173 实例125 将数据保存到指定的文件中 175 实例126 将由键盘中录入的信息保存到文件中 176 实例127 一个文件变成多个小文件 178 实例128 多个小文件...
46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 29 47、sleep() 和 wait() 有什么区别? 30 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明...
实例123 复制指定目录下的文件 170 实例124 显示文件中的内容 173 实例125 将数据保存到指定的文件中 175 实例126 将由键盘中录入的信息保存到文件中 176 实例127 一个文件变成多个小文件 178 实例...
46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 29 47、sleep() 和 wait() 有什么区别? 30 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明...
46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 32 47、sleep() 和 wait() 有什么区别? 33 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明...
46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 29 47、sleep() 和 wait() 有什么区别? 30 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明...