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 NIO 2(从Java 7开始引入)进一步增强了NIO的功能,提供了文件系统API和文件通道等特性,使其在文件操作方面也变得更为强大。 在IntelliJ IDEA中,开发者可以方便地使用Java IO和NIO编写和测试...
IO(Input/Output)流是Java提供的一种处理输入输出数据的方式,包括读取和写入文件。本篇文章将详细介绍如何使用Java的IO流来实现文件的复制。 首先,我们需要了解Java中的IO流体系。Java的IO库基于流的概念,流...
在Java IO中,数据的读写是通过流进行的,而NIO则引入了通道(Channel)和缓冲区(Buffer)的概念,使得数据操作更加高效。本文将深入探讨Java NIO与IO的性能测试,并通过代码实例来展示它们之间的差异。 首先,...
在复制文件时,我们用它来存储从源文件读取或写入目标文件的数据。 下面是一个简单的文件复制代码示例: ```java import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel...
复制整个文件夹需要递归地遍历文件夹内的所有文件和子文件夹。以下是一个简单的实现: ```java public static boolean copyDirectory(File sourceDir, File destDir) { if (!sourceDir.exists() || !sourceDir....
`java.nio`包下的`FileChannel`和`Files`类提供了更高级的文件操作,如映射内存到文件(MMap),以及异步文件操作。 例如,使用`Files`类移动文件: ```java Path sourcePath = Paths.get("sourceFile.txt"); Path...
Java NIO(New IO)是Java 1.4引入的一个新特性,它是对传统IO模型的重大改进,提供了更高效的数据处理方式。NIO的核心概念包括通道(Channels)、缓冲区(Buffers)和选择器(Selectors)。它允许多个输入/输出操作...
在Java编程语言中,`IO`(Input/Output)是处理数据输入和输出的核心部分,尤其是在处理大数据量文件时显得尤为重要。Java IO API提供了一系列类和接口,使得开发者能够高效地读取、写入和操作文件。下面我们将深入...
此外,FileChannel和NIO(New IO)框架提供了更高效且功能强大的文件复制方式,例如使用`FileChannel.transferTo()`或`FileChannel.transferFrom()`方法可以直接在两个通道之间传输数据,无需额外的缓冲区。...
使用NIO复制文件,可以使用Channels和Buffers: ```java import java.nio.*; import java.nio.channels.*; public class FileCopyWithNIO { public static void main(String[] args) { String sourceFilePath = ...
3. 文件系统API:NIO对文件系统操作的增强,如随机访问文件和文件通道。 4. 轮询机制:选择器如何轮询多个通道,以确定哪个准备好进行读写操作。 5. 多线程和线程池:NIO如何配合线程管理,以优化资源利用率。 6. 零...
Java IO应届生培训讲义是一份面向刚毕业的大学生进行Java IO相关知识的培训资料,它涵盖了Java IO的基础知识、不同的IO模型以及Java中的BIO、NIO和AIO高级IO类库。下面详细解释这些知识点: 1. 用户空间和内核空间 ...
相比于传统的IO(Input/Output)模型,NIO引入了非阻塞I/O、字符转换、缓冲和通道等新特性,极大地提高了Java程序在处理I/O操作时的性能。 1. **Buffer**:在传统的IO操作中,数据通常直接在流之间传输,这可能导致...
`java.io.File`类是Java中用于文件和目录操作的基础类。它可以用来创建、删除、重命名文件和目录,获取文件属性等。例如,创建一个新文件: ```java File file = new File("newFile.txt"); if (!file.exists())...
- 文件复制是IO操作的经典示例,通常涉及使用FileInputStream、FileOutputStream,以及缓冲流BufferedInputStream和BufferedOutputStream提高性能。 ### 2. NIO(New IO) 2.1. **NIO与传统IO的区别** - **非...
在Java编程语言中,文件复制是一项常见的任务,主要通过IO(Input/Output)流来实现。...在实际开发中,还可以考虑使用NIO(New IO)或Java 7引入的`Files.copy()` 方法,它们提供了更高效和简洁的文件操作方式。
2. File类:它是Java中处理文件和目录的主要类。通过File对象,我们可以创建、删除文件和目录,获取文件的基本信息(如大小、创建时间等),以及进行文件路径的操作。 三、文件读写 3. FileInputStream与...
总结来说,"Java程序_复制文件.jar"是一个结合了Java IO和Swing技术的实用示例。它演示了如何使用Java的文件操作类实现文件复制,同时利用Swing创建用户友好的图形界面。对于初学者来说,这是一个很好的实践项目,...
在“JavaIODemo”这个示例中,可能会包含以上提到的一些或全部Java IO操作的代码实例,通过这些实例,我们可以学习如何在实际项目中应用Java IO API。实践是掌握Java IO的最佳方式,通过对这些示例的分析和运行,...