`
dreamoftch
  • 浏览: 498371 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JAVA IO和NIO复制文件

阅读更多

 

 

package com.tch.test.t1;

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

public class FileCopyUtils {

	/**
	 * Created on 2013-10-10
	 * <p>
	 * Discription:
	 * </p>
	 * 
	 * @author:
	 * @return void
	 * @throws Exception 
	 */
	public static void main(String[] args) throws Exception {
		String source = "D:\\Program files\\tomcat6\\temp\\7C-setup.exe";
		String destination = "D:\\Program files\\tomcat6\\temp\\setup.exe";
		String destination2 = "D:\\Program files\\tomcat6\\temp\\setup2.exe";
		copyByNIO(source, destination);
		copyByIO(source, destination2);
	}
        //NIO 复制文件
	public static void copyByNIO(String source,String destination) throws Exception {
		FileInputStream fis = null;
		FileOutputStream fos = null;
		FileChannel fci = null;
		FileChannel fco = null;
		try {
			//打开stream
			fis = new FileInputStream(source);
			fos = new FileOutputStream(destination);
			//打开channel
			fci = fis.getChannel();
			fco = fos.getChannel();
			//buffer对象
			ByteBuffer buffer = ByteBuffer.allocate(10240);
			//开始复制
			while (true) {
				int n = fci.read(buffer);
				if (n == -1) break; //说明复制完成
				buffer.flip();
				fco.write(buffer);
				buffer.clear();
			}
		} catch (Exception e) {
			throw e;
		}finally{
			if(fis != null){
				fis.close();
				fis = null;
			}
			if(fos != null){
				fos.flush();
				fos.close();
				fos = null;
			}
			if(fci != null){
				fci.close();
				fci = null;
			}
			if(fco != null){
				fco.close();
				fco = null;
			}
		}
	}
	//IO 复制
	public static void copyByIO(String source,String destination) throws Exception {
		FileInputStream fis = null;
		FileOutputStream fos = null;
		try {
			//打开stream
			fis = new FileInputStream(source);
			fos = new FileOutputStream(destination);
			int n = -1;
			byte[] b = new byte[10240];
			while((n=fis.read(b)) != -1){
				fos.write(b, 0, n);
			}
		} catch (Exception e) {
			throw e;
		}finally{
			if(fis != null){
				fis.close();
				fis = null;
			}
			if(fos != null){
				fos.flush();
				fos.close();
				fos = null;
			}
		}
	}
	
	
}

 

分享到:
评论

相关推荐

    JAVA IO and NIO

    在实际开发中,Java NIO 2(从Java 7开始引入)进一步增强了NIO的功能,提供了文件系统API和文件通道等特性,使其在文件操作方面也变得更为强大。 在IntelliJ IDEA中,开发者可以方便地使用Java IO和NIO编写和测试...

    java 使用IO流实现文件的复制

    IO(Input/Output)流是Java提供的一种处理输入输出数据的方式,包括读取和写入文件。本篇文章将详细介绍如何使用Java的IO流来实现文件的复制。 首先,我们需要了解Java中的IO流体系。Java的IO库基于流的概念,流...

    java nio与io性能测试

    在Java IO中,数据的读写是通过流进行的,而NIO则引入了通道(Channel)和缓冲区(Buffer)的概念,使得数据操作更加高效。本文将深入探讨Java NIO与IO的性能测试,并通过代码实例来展示它们之间的差异。 首先,...

    NIO复制文件

    在复制文件时,我们用它来存储从源文件读取或写入目标文件的数据。 下面是一个简单的文件复制代码示例: ```java import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel...

    JAVA 的IO流的文件复制

    复制整个文件夹需要递归地遍历文件夹内的所有文件和子文件夹。以下是一个简单的实现: ```java public static boolean copyDirectory(File sourceDir, File destDir) { if (!sourceDir.exists() || !sourceDir....

    Java IO 基础操作(文件读写和移动)

    `java.nio`包下的`FileChannel`和`Files`类提供了更高级的文件操作,如映射内存到文件(MMap),以及异步文件操作。 例如,使用`Files`类移动文件: ```java Path sourcePath = Paths.get("sourceFile.txt"); Path...

    NIO与零拷贝_javanio_nio和零拷贝_

    Java NIO(New IO)是Java 1.4引入的一个新特性,它是对传统IO模型的重大改进,提供了更高效的数据处理方式。NIO的核心概念包括通道(Channels)、缓冲区(Buffers)和选择器(Selectors)。它允许多个输入/输出操作...

    java io读取文件

    在Java编程语言中,`IO`(Input/Output)是处理数据输入和输出的核心部分,尤其是在处理大数据量文件时显得尤为重要。Java IO API提供了一系列类和接口,使得开发者能够高效地读取、写入和操作文件。下面我们将深入...

    java的IO流实现文件复制20190726.zip

    此外,FileChannel和NIO(New IO)框架提供了更高效且功能强大的文件复制方式,例如使用`FileChannel.transferTo()`或`FileChannel.transferFrom()`方法可以直接在两个通道之间传输数据,无需额外的缓冲区。...

    io操作复制文件

    使用NIO复制文件,可以使用Channels和Buffers: ```java import java.nio.*; import java.nio.channels.*; public class FileCopyWithNIO { public static void main(String[] args) { String sourceFilePath = ...

    Java IO合集

    3. 文件系统API:NIO对文件系统操作的增强,如随机访问文件和文件通道。 4. 轮询机制:选择器如何轮询多个通道,以确定哪个准备好进行读写操作。 5. 多线程和线程池:NIO如何配合线程管理,以优化资源利用率。 6. 零...

    Java IO应届生培训讲义

    Java IO应届生培训讲义是一份面向刚毕业的大学生进行Java IO相关知识的培训资料,它涵盖了Java IO的基础知识、不同的IO模型以及Java中的BIO、NIO和AIO高级IO类库。下面详细解释这些知识点: 1. 用户空间和内核空间 ...

    Java_NIO与IO的区别和比较.doc

    相比于传统的IO(Input/Output)模型,NIO引入了非阻塞I/O、字符转换、缓冲和通道等新特性,极大地提高了Java程序在处理I/O操作时的性能。 1. **Buffer**:在传统的IO操作中,数据通常直接在流之间传输,这可能导致...

    Java实现文件复制,File文件读取,写入,IO流的读取写入

    `java.io.File`类是Java中用于文件和目录操作的基础类。它可以用来创建、删除、重命名文件和目录,获取文件属性等。例如,创建一个新文件: ```java File file = new File("newFile.txt"); if (!file.exists())...

    IO及NIO技术专题培训材料

    - 文件复制是IO操作的经典示例,通常涉及使用FileInputStream、FileOutputStream,以及缓冲流BufferedInputStream和BufferedOutputStream提高性能。 ### 2. NIO(New IO) 2.1. **NIO与传统IO的区别** - **非...

    java 复制文件 io流操作

    在Java编程语言中,文件复制是一项常见的任务,主要通过IO(Input/Output)流来实现。...在实际开发中,还可以考虑使用NIO(New IO)或Java 7引入的`Files.copy()` 方法,它们提供了更高效和简洁的文件操作方式。

    Java IO 编程集合

    2. File类:它是Java中处理文件和目录的主要类。通过File对象,我们可以创建、删除文件和目录,获取文件的基本信息(如大小、创建时间等),以及进行文件路径的操作。 三、文件读写 3. FileInputStream与...

    Java程序_复制文件.jar

    总结来说,"Java程序_复制文件.jar"是一个结合了Java IO和Swing技术的实用示例。它演示了如何使用Java的文件操作类实现文件复制,同时利用Swing创建用户友好的图形界面。对于初学者来说,这是一个很好的实践项目,...

    Java IO 使用例

    在“JavaIODemo”这个示例中,可能会包含以上提到的一些或全部Java IO操作的代码实例,通过这些实例,我们可以学习如何在实际项目中应用Java IO API。实践是掌握Java IO的最佳方式,通过对这些示例的分析和运行,...

Global site tag (gtag.js) - Google Analytics