`

FileInputStream,FileOutputStream文件拷贝之性能比较

阅读更多
package com.kingsoft.main;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class TestIO03 {
  
  /**
   * @param args
   * @throws IOException
   */
  public static void main(String[] args) throws IOException {
    
    InputStream ins = new FileInputStream(
        "E:\\tools\\FreeMind-Windows-Installer-0.8.1-max.exe");
    OutputStream ous = new FileOutputStream(
        "D:\\FreeMind-Windows-Installer-0.8.1-max.exe_bk");
    
    byte[] contents = new byte[ins.available()];
    
    long start = System.currentTimeMillis();
    // 读取文件
    int i = 0;
    int count = 0;
    while ((i = ins.read()) != -1) {
      contents[count] = (byte) i;
      count++;
    }
    
    long end = System.currentTimeMillis();
    System.out.println("读取耗时:" + (end - start) + "毫秒");
    
    start = System.currentTimeMillis();
    // 输出文件
    for (int j = 0; j < contents.length; j++) {
      ous.write(contents[j]);
    }
    
    end = System.currentTimeMillis();
    System.out.println("读取耗时:" + (end - start) + "毫秒");
    
    ins.close();
    ous.flush();
    ous.close();
  }
}

执行结果如下:
读取耗时:13329毫秒
读取耗时:16083毫秒

    InputStream ins = new FileInputStream(
        "E:\\tools\\FreeMind-Windows-Installer-0.8.1-max.exe");
    OutputStream ous = new FileOutputStream(
        "D:\\FreeMind-Windows-Installer-0.8.1-max.exe_bk");
    
    long start = System.currentTimeMillis();
    int i = 0;
    while ((i = ins.read()) != -1) {
      ous.write(i);
    }
    
    long end = System.currentTimeMillis();
    System.out.println("耗时:" + (end - start) + "毫秒");
    
    ins.close();
    ous.flush();
    ous.close();

执行结果如下:
耗时:30013毫秒

    InputStream ins = new FileInputStream(
        "E:\\tools\\FreeMind-Windows-Installer-0.8.1-max.exe");
    OutputStream ous = new FileOutputStream(
        "D:\\FreeMind-Windows-Installer-0.8.1-max.exe_bk");
    
    byte[] contents = new byte[ins.available()];
    
    long start = System.currentTimeMillis();
    ins.read(contents);
    ous.write(contents);
    
    long end = System.currentTimeMillis();
    System.out.println("耗时:" + (end - start) + "毫秒");
    
    ins.close();
    ous.flush();
    ous.close();

执行结果如下:
耗时:2384毫秒
分享到:
评论

相关推荐

    用java实现文件拷贝

    它使用`FileInputStream`和`FileOutputStream`类来打开文件流,然后使用循环来读取源文件的内容并将其写入到目标文件中。 main()方法的实现 在`main()`方法中,我们创建了一个`Main`对象,并调用其`copy()`方法来...

    MavenUtil 文件拷贝

    例如,`File`类用于文件和目录路径名的表示,`FileInputStream`和`FileOutputStream`用于读写文件,`Files`类提供了一套静态方法,简化了文件操作,包括复制、移动和删除等。 2. **流(Stream)**:在Java中,文件...

    Java无敌 基于网络的文件拷贝

    2. **文件读取**:在发送端,使用`FileInputStream`打开要拷贝的本地文件,然后通过`Socket`的`OutputStream`逐块读取并发送文件内容。为了提高效率,可以考虑使用缓冲区(如`BufferedInputStream`)来减少磁盘I/O...

    java 文件拷贝

    在Java中,文件拷贝是常见的数据操作之一,涉及到数据的读取和写入。文件拷贝可以通过标准的IO流来实现,其中主要有两种不同的拷贝方案。 第一种方案是将文件内容一次性读取到内存中,然后再一次性写入到目标文件。...

    第12讲 Java有几种文件拷贝方式?哪一种最高效?1

    首先,Java.IO类库提供了一种基于`FileInputStream`和`FileOutputStream`的文件拷贝方式。这种实现方式简单直观,通过读取源文件并写入目标文件,每次读取和写入一个缓冲区的数据。代码如下: ```java public ...

    简单的文件拷贝 simpleFileCopy

    在IT行业中,文件操作是日常开发中的基础任务之一,而“简单的文件拷贝 simpleFileCopy”这个项目就涉及到了如何在Java中实现文件和文件夹的复制功能。在这个过程中,我们通常会涉及到文件的比较、读取、写入等多个...

    线程池拷贝显示树状图.zip

    除了上述的`FileInputStream`和`FileOutputStream`之外,还有`RandomAccessFile`用于随机访问文件,`FileReader`和`FileWriter`用于读写字符数据,以及`Files`类提供的更高级别的操作,如`copy()`方法可以方便地完成...

    JAVA 带进度条的文件拷贝程序

    我们可以通过FileInputStream和FileOutputStream读写文件,配合BufferedInputStream和BufferedOutputStream提高效率。在拷贝过程中,我们需要计算已拷贝的字节数,以此更新JProgressBar的当前值。 4. **多线程**:...

    java代码实现文件的拷贝

    例如,`FileInputStream`和`FileOutputStream`是直接与文件进行交互的类,分别用于读取和写入文件。除此之外,还有缓冲流(如`BufferedInputStream`和`BufferedOutputStream`),它们能提高数据传输效率,以及转换流...

    文件拷贝工具源码,用效率最高的算法(0分)

    - 如何使用`FileInputStream`和`FileOutputStream`进行文件读写。 - 是否利用了`FileChannel`进行高效传输。 - 如何处理多线程拷贝,如果有的话。 - 错误处理和异常捕获的策略。 - 是否有进度更新和用户反馈的机制。...

    标准字节流拷贝纯文本文件工具类

    `FileInputStream`和`FileOutputStream`是Java提供的两个核心类,分别用于读取和写入文件的字节流。这个名为"标准字节流拷贝纯文本文件工具类"的代码库可能包含了一些辅助方法,旨在简化使用这些类来复制纯文本文件...

    拷贝文件及文件夹(封装工具类)

    Java提供了丰富的I/O类库,如`FileInputStream`和`FileOutputStream`用于处理文件,以及`BufferedInputStream`和`BufferedOutputStream`来提高读写性能。 在拷贝单个文件时,我们可以使用`java.nio.file.Files`类...

    java实现文件拷贝的七种方式

    在上面的代码中,我们使用了 `FileInputStream` 和 `FileOutputStream` 两个类来实现文件的拷贝。首先,我们创建了源文件和目标文件的对象,然后使用 `FileInputStream` 读取源文件的内容,并将其写入到目标文件中...

    Java中文件IO流.pdf

    下面是一个简单的文件拷贝程序,演示了如何使用 FileInputStream 和 FileOutputStream 对文件进行读取和写入操作: ``` import java.io.*; public class FileIO { public static void main(String args[]) { try...

    java swing拷贝文件进度条

    在Java中,我们可以使用java.io包中的FileInputStream和FileOutputStream来读写文件,同时结合java.nio.channels.FileChannel进行大文件的高效传输。为了展示进度,我们可以利用javax.swing.JProgressBar控件。下面...

    文件批量拷贝、重命名工具类 for java.zip

    它遍历源文件列表,使用Java的`FileInputStream`和`FileOutputStream`对每个文件进行读写操作,从而实现文件的拷贝。为了确保文件内容的完整性和一致性,拷贝过程中可能还会使用缓冲区来提高效率,并处理异常情况,...

    U盘自动拷贝

    在U盘拷贝的场景下,FileInputStream用于读取U盘上的文件数据,FileOutputStream用于将读取的数据写入到目标存储路径。 ### 多线程编程 在自动拷贝U盘内容的过程中,程序需要不断检测是否有新的盘符插入,这就涉及...

    java 局域网拷贝文件

    3. **打开输入/输出流**:使用`FileInputStream`和`FileOutputStream`分别打开源文件和目标文件的流。如果使用NIO,可以使用`FileChannel`的`transferFrom()`和`transferTo()`方法进行大文件高效传输。 4. **读写...

    拷贝文件copy

    首先,我们需要创建一个FileInputStream来读取源文件,然后创建一个FileOutputStream来写入目标文件。接着,通过循环读取InputStream中的字节并写入OutputStream,直到文件结束。 ```java File source = new File...

Global site tag (gtag.js) - Google Analytics