- 浏览: 306781 次
- 性别:
- 来自: 郴州
文章分类
- 全部博客 (70)
- hadoop (0)
- lucene (1)
- heritrix (1)
- webservice (0)
- css+div (0)
- java (29)
- javaweb (3)
- spring (2)
- hibernate (3)
- struts (5)
- struts2 (3)
- tomcat (1)
- map/reduce (0)
- ajax (0)
- android (3)
- oracle (3)
- 面试题 (1)
- 生活 (0)
- 开发工具 (1)
- 面试实习 (0)
- 设计模式 (3)
- 数据结构 (5)
- 论坛 (2)
- flex (3)
- PureMVC (1)
- java,jdk (1)
- sql server (1)
- 报表 (1)
- 算法 (4)
- 工作 (0)
最新评论
-
lp895876294:
第三种方式类似于工厂方法模式了
设计模式之单例模式(三种实现方式) -
xchsh12345:
如果用的是linux服务器呢
解决利用iText导出PDF报表中文乱码两种方式 -
memoryisking:
写的不错,关于Timer和TimeTask的内容网上资料挺多的 ...
Java定时调度 Timer类和TimerTask类 -
linfeng0169:
写的不错~!不过就是解释的不算好!
Calendar类add()与roll()方法的区别 -
u013606853:
好流弊的样子,LZ V5~
hibernate注解详解
文件复制首先我们要考虑的是用字符流还是文件流操作呢?
若我们考虑的仅仅是文本之类的复制,字符流要好些。但是不可能总是文本文件吧,有可能是声音,图像,视频等等,所以使用字节流操作比较好。
复制的两种方式
1.将源文件中的内容全部读取到内存中,并一次性写入到目标文件
2.不将源文件中的内容全部读取到内存中来,而是采取边读边写的方式
下面就是采用这两种方法对比
经测试发现,对于读取文件的大小小于自身机器的内存时,采取方式1要比方式二快很多,但是若读取的文件大于自身内存则方式二好些。不过在这种情况下有更好的方式就是采取缓冲机制,读取一块,写入一块。结合了一和二的优点。
若我们考虑的仅仅是文本之类的复制,字符流要好些。但是不可能总是文本文件吧,有可能是声音,图像,视频等等,所以使用字节流操作比较好。
复制的两种方式
1.将源文件中的内容全部读取到内存中,并一次性写入到目标文件
2.不将源文件中的内容全部读取到内存中来,而是采取边读边写的方式
下面就是采用这两种方法对比
package zzs.file.demo; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class FileCopy { private File inputFile; private File outputFile; private InputStream inputStream; private OutputStream outputStream; public FileCopy(String inputPath,String outputPath) throws FileNotFoundException{ inputFile=new File(inputPath); outputFile=new File(outputPath); inputStream=new FileInputStream(inputFile); outputStream=new FileOutputStream(outputFile); } //一次性把数据全部读取到内存中来,再一次性写入 public void copy1() throws IOException{ byte b[]=new byte[(int)inputFile.length()]; inputStream.read(b); //一次性读入 outputStream.write(b); //一次性写入 // inputStream.close(); // outputStream.close(); } //边读边写 public void copy2() throws IOException{ int temp=0; while((temp=inputStream.read())!=-1){ outputStream.write(temp); } inputStream.close(); outputStream.close(); } public File getInputFile() { return inputFile; } public void setInputFile(File inputFile) { this.inputFile = inputFile; } public File getOutputFile() { return outputFile; } public void setOutputFile(File outputFile) { this.outputFile = outputFile; } public static void main(String[] args) throws IOException{ String inputPath="e:"+File.separator+"Xfire.rar"; String outputPath="f:"+File.separator+inputPath.substring(inputPath.indexOf(File.separator)); FileCopy fileCopy=new FileCopy(inputPath, outputPath); long start1=System.currentTimeMillis(); fileCopy.copy1(); long end1=System.currentTimeMillis(); System.out.println("一次性全部读入内存复制文件大小为"+fileCopy.getInputFile().length()+"位花费时间为:"+(end1-start1)+"ms"); fileCopy.getOutputFile().delete(); long start2=System.currentTimeMillis(); fileCopy.copy2(); long end2=System.currentTimeMillis(); System.out.println("边读边写复制文件大小为"+fileCopy.getInputFile().length()+"位花费时间为:"+(end2-start2)+"ms"); } }
经测试发现,对于读取文件的大小小于自身机器的内存时,采取方式1要比方式二快很多,但是若读取的文件大于自身内存则方式二好些。不过在这种情况下有更好的方式就是采取缓冲机制,读取一块,写入一块。结合了一和二的优点。
发表评论
-
利用微软翻译API替代被停用谷歌翻译API
2012-02-13 13:37 10432众所周知,谷歌已经不支持翻译API1版本了,现在提供了A ... -
(转)Java回调实现
2011-12-08 14:38 1161Java回调实现 轮询:过10分钟就到女朋友宿舍前面去看她有 ... -
java实现排序算法之插入排序(直接插入排序、折半插入、shell排序)
2011-09-15 09:29 2514插入排序主要包括直接插入排序、shell排序和折半插入等几种排 ... -
java实现排序算法之交换排序(冒泡排序、快速排序)
2011-09-14 21:28 2622交换排序的主体操作是对数组中的数据不断进行交换操作。交换排序主 ... -
java实现排序算法之选择排序(直接选择排序、堆排序)
2011-09-14 20:44 2672常用的选择排序算法有两种:直接选择排序和堆排序。 一、直接选择 ... -
java 实现数据结构之队列
2011-09-14 15:27 12653队列是一种特殊的线性表,它只允许在表的前端(front)进行删 ... -
java 实现数据结构之线性表
2011-09-14 11:44 10705应用程序后在那个的数据大致有四种基本的逻辑结构: 集合:数 ... -
java 实现undo和redo操作链表的一种实现
2011-09-14 10:32 2168今天在iteye论坛逛,发现有这么一道笔试题目:实现一个可以增 ... -
jdbc连接mysql oracle sql server数据库的连接字符串
2011-09-13 10:41 2754jdbc连接mysql oracle sql serv ... -
java 利用label标记退出多重循环
2011-09-10 09:16 12094学过C语言的都知道,有个goto关键字,利用goto关键字可以 ... -
深入JDK源代码之定时操作Timer类和TimerTask类实现
2011-07-26 14:45 3515Timer类是一种线程设施,可以用来实现某一个时间或某 ... -
(转)Java中对象的深复制(深克隆)和浅复制(浅克隆)
2011-07-25 20:31 12301.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象 ... -
深入JDK源代码之LinkedList类
2011-07-26 09:09 1926public class LinkedList<E> ... -
Java中的transient关键字
2011-07-25 14:36 24929transient说明一个属性是临时的,不会被序列化。 下面是 ... -
深入JDK源代码之Observer接口和Observable类实现观察者模式
2011-07-25 11:46 3454一、何为观察者模式? 观察者模式(有时又被称为发布/ ... -
深入JDK源代码之ArrayList类
2011-07-22 11:19 2945public class ArrayList<E&g ... -
深入JDK源代码之Arrays类中的排序查找算法
2011-07-22 09:58 3990最近在暑假实习, ... -
java 实现数据结构之栈
2011-07-10 21:51 4684在学数据结构课程 ... -
Java定时调度 Timer类和TimerTask类
2011-07-10 15:38 23956Timer类是一种线程设施,可以用来实现某一个时间或某一段 ... -
Calendar类add()与roll()方法的区别
2011-07-06 22:45 10974JDK API中对这两个方法的说明如下: abstract ...
相关推荐
本文将详细介绍四种常见的Java文件复制方法:使用`FileStreams`、使用`FileChannel`、使用Apache `Commons IO`以及使用Java 7的`Files`类。 #### 1. 使用`FileStreams`复制文件 这种方法是最传统的文件复制手段,...
综上所述,Java中的文件复制可以通过多种方式进行,Stream API提供了一种更现代、更高效的解决方案,特别是在Java 8及更高版本中。在实际编程中,开发者应根据项目需求和性能要求灵活选择合适的方法。
今天,我们将介绍如何使用Java实现复制Excel工作表功能,包括在同一个工作簿内复制工作表和在不同工作簿间复制工作表两种情况。 复制工作表 在实际应用中,我们经常需要复制工作表以便更好地组织和管理数据。使用...
总的来说,Java通过IO流提供了多种文件复制的方法,开发者可以根据实际需求选择合适的方式。无论是基础的字节流还是高效的NIO,它们都是Java处理文件操作的重要工具。在实际开发中,理解并掌握这些技术,对于提升...
本资源主要讲解了高效率文件复制的java实现方法,包含了两种不同的实现方式,分别使用java io流和FileChannel来实现文件复制操作。 知识点1:Java IO流文件复制 在第一个实现方法中,我们使用了Java IO流来实现...
总的来说,Java的`WatchService`为开发者提供了一种有效的方式去监控文件系统的动态,而剪贴板的监听则需要借助额外的库或系统API。通过合理的编程和事件处理,我们可以构建出一个能够满足特定需求的文件监控系统。
在这个小程序中,我们使用了Java文件操作的相关知识点,包括: * `File`类:用来创建文件对象。 * `FileInputStream`和`FileOutputStream`类:用来打开文件流。 * `read()`和`write()`方法:用来读取和写入文件的...
在IT行业中,Java是一种广泛应用的编程语言,它不仅在企业级应用中表现出色,也能够实现各种系统级别的功能,如远程文件操作。本篇将详细探讨如何使用Java来实现Linux系统的远程拷贝功能。 首先,要实现Linux的远程...
Java 文件复制器是一种实用程序,用于在计算机上复制文件。在这个特定的代码示例中,我们看到一个名为 `FileCopy` 的类,该类包含了复制文件的核心逻辑。下面我们将详细探讨这个程序的关键部分以及实现文件复制所...
这里我们将详细探讨两种不同的方法来实现这个过程。 方法一:使用Apache Commons Compress库 Apache Commons Compress库是Java社区广泛使用的处理各种压缩格式的库,包括tar.gz。要使用这个库,首先需要将它的jar...
在这个案例中,我们讨论的主题是如何利用Java的IO流实现文件复制,特别是使用字节流进行操作。字节流是Java IO流的一种类型,它可以处理任何类型的原始数据,因为所有数据在计算机内部最终都会被转化为字节序列。 ...
Java的NIO(非阻塞I/O)提供了一种更高效的方式来处理文件操作,特别是当处理大量文件或大文件时。`java.nio`包提供了一组新的类,如`FileChannel`,`ByteBuffer`等,它们可以在不阻塞主线程的情况下进行I/O操作。 ...
下面我们将详细探讨这些流在文本文件复制中的应用。 首先,字节流是Java中最基础的流类型,分为InputStream和OutputStream两个类,它们分别用于处理数据的输入和输出。InputStream用于读取原始的字节数据,而...
在Java编程语言中,文件合并与分割是常见的文件操作任务,尤其在大数据处理、日志分析和文件管理等场景中尤为关键。本程序提供了一个基础的实现,旨在帮助初学者理解这一过程,并通过MD5校验确保文件的完整性和未被...
综上所述,这个"java文件复制"项目涵盖了Java I/O流的使用、GUI设计、异常处理等多个核心知识点,为用户提供了一种实用的文件复制解决方案。通过学习和实践,开发者可以深入理解Java文件操作和GUI编程。
Java中的Apache POI库是一个强大的工具,用于读取、创建和...在给定的代码中,可能有两个不同的迭代实现,分别对应两种不同的处理方式或优化策略。通过深入学习和实践,可以灵活地根据需求生成定制化的PPT报告或展示。
以下是一个基础的文件复制方法的示例: ```java import java.io.*; public class CopyTest { public static void copyFile(String sourcePath, String destPath) { try (FileInputStream fis = new ...
* 字节流和字符流是 Java 中两种基本的输入/输出流,分别用于读取和写入二进制数据和字符数据。 * 使用字节流可以实现文件的快速拷贝,适合大型文件的拷贝。 * 使用字符流只能拷贝文本文件,适合小型文本文件的拷贝...
Java中有多种方法可以实现文件复制,包括使用文件流、BufferedReader和BufferedWriter等方式。在本例中,我们使用文件流的方式来复制文件。 三、使用文件流复制文件的步骤 1. 创建文件输入流对象,用于读取源文件...
首先,我们来看如何在Java中实现文件复制。通常,我们可以使用`java.io`包中的`FileInputStream`和`FileOutputStream`类来读取和写入文件。以下是一个名为`CopyFileUtil`的工具类,它包含两个方法:`copyFile`和`...