`

[java][nio]nio文件拷贝

阅读更多

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

/**
 * 
 * 使用Channel和Buffer拷贝文件
 *
 */
public class ChannelCopy {
	
	private static final int BSIZE = 1024;
	
	public static void main(String[] args) throws Exception {
		channelCopy("d:\\a.txt","d:\\b.txt");
	}
	
	static void channelCopy(String src, String dest) throws Exception{
		//一个输入通道,一个输出通道
		FileChannel in = new FileInputStream(src).getChannel(),
		            out = new FileOutputStream(new File(dest).getAbsoluteFile(),true).getChannel();
		
		ByteBuffer bb = ByteBuffer.allocate(BSIZE);
		while(in.read(bb)!=-1){
			bb.flip();
			out.write(bb);
			bb.clear();
		}
		in.close();
		out.close();
	}
}





import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.channels.FileChannel;
/**
 * 
 * 使用transferTo和transferFrom将一个通道和另一个通道相连
 *
 */
public class TransferTo {

	public static void main(String[] args) throws Exception {
		transferTo("d:\\a.txt","d:\\b.txt");
	}
	
	static void transferTo(String src, String dest) throws Exception{
		//一个输入通道,一个输出通道
		FileChannel in = new FileInputStream(src).getChannel(),
		            out = new FileOutputStream(new File(dest).getAbsoluteFile(),true).getChannel();
		
		in.transferTo(0, in.size(), out);//将in通道数据转入out通道,在文件尾
		//out.transferFrom(in, 0, in.size());//将in通道数据转入out通道,会覆盖
		in.close();
		out.close();
	}

}


分享到:
评论

相关推荐

    NIO与零拷贝_javanio_nio和零拷贝_

    - **直接内存(Direct Byte Buffer)**:Java NIO中的直接缓冲区可以分配在JVM堆外内存,减少从Java对象到本机内存的拷贝,从而实现零拷贝。 - **mmap(Memory Mapped File)**:Java的FileChannel提供了一个映射...

    Java NIO英文高清原版

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java平台中用于替代标准I/O(BIO)模型的一种新机制。NIO在Java 1.4版本引入,提供了更高效的数据处理和通道通信方式,特别适用于高并发、大数据...

    Java NIO学习资料+代码.zip

    Java NIO提供了多种通道,如FileChannel用于文件操作,SocketChannel和ServerSocketChannel用于网络通信。通道是双向的,可以同时进行读写操作。 - **缓冲区(Buffers)**:缓冲区是数据存储的地方,它是Java NIO的...

    java nio 聊天室源码

    Java NIO(New IO)是Java 1.4版本引入的一个新模块,全称为New Input/Output,是对传统IO API的扩展。它提供了一种更高效、更具选择性的IO操作方式,尤其适用于高并发和大数据处理场景。在这个“java nio 聊天室...

    java NIO socket聊天

    在Java NIO中,数据的读写都是基于缓冲区进行的,这样可以避免不必要的数据拷贝,提高I/O操作的效率。 此外,Java NIO还引入了`Pipe`和`FileChannel`等特性,使得进程间通信和文件操作也变得更加灵活。`Pipe`允许两...

    ffc.zip_FileCopy_NIO_java nio

    Java NIO(New IO)是Java 1.4版本引入的一个新特性,它为Java程序提供了更高效的数据传输方式,特别是在大文件处理时,相比于传统的IO流,NIO具有显著的优势。标题“ffc.zip_FileCopy_NIO_java nio”表明我们将讨论...

    Java-NIO-Programming-Cookbook(含源码)

    8. **效率比较**:在特定场景下,`DirectByteBuffer`可能比`HeapByteBuffer`更快,因为减少了数据在Java堆和物理内存之间的拷贝。但并非所有情况都适用,具体取决于系统配置和数据量。 通过这本书和提供的源码,你...

    Java语言基础教程-Java NIO流篇3

    在本教程中,我们将深入探讨Java NIO流的两个关键部分:文件通道操作和选择器。 ### 文件通道操作 在Java NIO中,文件通道(FileChannel)是从`java.nio.channels.FileChannel`类中创建的,它允许我们以非阻塞方式...

    Java NIO入门

    4. **文件通道(FileChannel)**:用于读写文件,可以进行映射内存操作,如MappedByteBuffer,直接在内存与磁盘之间交换数据,避免了数据拷贝,提高了效率。 5. **管道(Pipe)**:用于两个线程间的单向通信。一个...

    《Java NIO》Download Url

    《Java NIO》这本书主要探讨的是Java的非阻塞I/O模型,它是Java标准库提供的一种高效、低延迟的I/O处理方式。NIO(Non-blocking Input/Output)与传统的BIO(Blocking I/O)模式相比,更适用于高并发、大数据量的...

    Java NIO核心概念总结篇

    ### Java NIO 核心概念详解 #### 一、Java NIO 基本介绍 Java NIO(New IO 或 NonBlocking IO)是 Java 1.4 版本开始引入的一种全新的 I/O API,旨在提高 I/O 吞吐量。与传统的阻塞 I/O 相比,NIO 的设计思想更为...

    Java NIO (中文版).pdf

    3. **内存直接访问(Direct Buffers)**:NIO支持直接在物理内存中操作数据,避免了频繁的Java堆与物理内存之间的数据拷贝,提高了性能。 4. **聚合操作**:例如FileChannel的transferTo和transferFrom方法,可以...

    Java NIO 系列教程1

    Java NIO中的主要通道包括FileChannel、DatagramChannel、SocketChannel和ServerSocketChannel,分别对应文件操作、UDP网络通信、TCP网络通信和服务器端的TCP连接。 4. **缓冲区(Buffer)** Java NIO提供了多种...

    java nio不错的学习资料

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java标准库提供的一种替代传统I/O(BIO)模型的新技术。它在Java 1.4版本中被引入,极大地提升了Java处理I/O操作的效率,尤其是在高并发、大数据...

    Java Nio ibm技术文档

    ### Java NIO (New Input/Output):IBM技术文档概览与详解 #### 一、引言 在Java开发领域,高效的数据输入输出处理一直是开发者关注的重点之一。随着JDK 1.4的发布,一个新的输入输出库——NIO(New Input/Output...

    java swing拷贝文件进度条

    Java提供了一个名为`java.nio.file.Files`的类,它包含了一些静态方法,如`copy()`,可以用来拷贝文件。以下是一个简单的文件拷贝示例: ```java import java.nio.file.Files; import java.nio.file.Path; import ...

    java使用nio2拷贝文件的示例

    本示例将详细讲解如何使用Java NIO2来高效地拷贝文件。 首先,我们看到代码中定义了一个名为`MyFiles2`的类,这个类用于实现文件或文件夹的拷贝功能。它包含了一些成员变量,如源文件路径`src`、目标文件路径`tar`...

    基于Java NIO的网络编程框架.zip

    本项目深入探讨了Java网络编程中的多种模式,包括BIO(阻塞IO)、NIO(非阻塞IO)、IO多路复用(select、poll、epoll)、Reactor模式,以及零拷贝技术。通过这些实现,项目展示了如何在高并发环境下优化网络通信效率...

Global site tag (gtag.js) - Google Analytics