`

java复制文件高效处理方式

阅读更多

1.实现输出读取文件内容的示列(不推荐使用低效):

@Test
 public void testStream(){
  InputStream fis=null;    //声明输入流对象
  OutputStream fos=null;   //声明输出流对象
  try {
   fis=new FileInputStream("d:\\ff_copy.txt");
   fos=new FileOutputStream("d:\\ff_copy1.txt");
   long num=0;          //读取字节计数
   int bt=0;            //每次读入字节内容
   //当读入文件末尾时,读入数据的值为-1,每次读入一个字节,存放变量bt中,直到读完整个文件
   while((bt=fis.read())!=-1){
    //以字母的形式逐个输出文件的每个字节
    System.out.println((char) bt);
    fos.write(bt);  //将字节写入输出流中,实现copy功能
    num++;
   }
   System.out.println("读取的字节数为"+num+"\n 文件复制成功");
   
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block	
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block	 
   e.printStackTrace();
  }finally{
   try {
    fis.close();
    fos.close();
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }	
  }
 }

 2.使用缓冲流来实现(一般):

/*
  * 字节流测试:copy文件
  */
    @Test
    public void tsetBufferStream() {
     InputStream fis=null;
     OutputStream fos=null;
     try {
   fis=new BufferedInputStream(new FileInputStream("d:\\ff_copy.txt"));
   fos=new BufferedOutputStream(new FileOutputStream("d:\\ff_copy2.txt"));
      byte[] bur=new byte[2048];
   int i;
      while((i=fis.read())!=-1){
       fos.write(bur,0,i);
      }
     } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } 
     finally{
       try {
     fis.close();
     fos.close();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }  	   
     }   
    }

 3.使用同道的方式:高效(推荐使用这种方式)

@Test
 public void testFileChanne(){
  FileInputStream fi = null;
  FileOutputStream fo = null;
  FileChannel in = null;
  FileChannel out = null;
  try {
   fi = new FileInputStream("d:\\ff_copy.txt");
   fo = new FileOutputStream("d:\\ff_copy3.txt");
   in = fi.getChannel();//得到对应的文件通道
   out = fo.getChannel();//得到对应的文件通道
   in.transferTo(0, in.size(), out);//连接两个通道,并且从in通道读取,然后写入out通道
  } catch (IOException e) {
   e.printStackTrace();
  } finally {
   try {
    fi.close();
    in.close();
    fo.close();
    out.close();
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
 }

 

 

分享到:
评论

相关推荐

    java复制文件的4种方式

    ### Java复制文件的四种方式详解 #### 概述 在Java开发过程中,文件操作是一项基本且重要的任务。其中,文件复制是经常需要用到的功能之一。尽管Java标准库并未直接提供一个简单的方法来复制文件,但开发者可以...

    高效处理文件流 java文件

    里面包含了高效处理文件流的一个java文件,工作时总会用到 个人原创 请使用者标明作者信息 谢谢 oneRose 奉献(下载后的朋友们给点意见 谢谢)

    java高效文件复制.txt

    在Java编程中,复制文件的方法有很多,而且经常要用到。我以前一直是缓冲输入输出流来实现的(绝大多数人都是如此),近来在研究JDK文档时发现,用文件通道(FileChannel)来实现文件复制竟然比用老方法快了近三分之...

    java 复制文件 io流操作

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

    高效率文件复制java版

    本资源主要讲解了高效率文件复制的java实现方法,包含了两种不同的实现方式,分别使用java io流和FileChannel来实现文件复制操作。 知识点1:Java IO流文件复制 在第一个实现方法中,我们使用了Java IO流来实现...

    java实现文件的复制

    综上所述,Java中的文件复制可以通过多种方式进行,Stream API提供了一种更现代、更高效的解决方案,特别是在Java 8及更高版本中。在实际编程中,开发者应根据项目需求和性能要求灵活选择合适的方法。

    java简单的文件复制粘贴

    * 高效:Java 文件复制粘贴可以快速地复制大型文件,提高系统的效率。 * 可靠:Java 文件复制粘贴可以确保文件的完整性和一致性,减少文件损坏的风险。 * 灵活:Java 文件复制粘贴可以根据具体情况选择不同的文件...

    java实现一个目录下全部文件复制到另一目录

    在Java中,我们通常使用`java.nio`包下的`Files`和`Paths`类来处理文件的读写操作,因为它们提供了更高效和易用的API。`Files.copy()`方法可以用来复制文件,并且可以设置是否覆盖已存在的目标文件。 ```java for ...

    java文件复制(全)

    在Java编程中,文件复制是一项基础且常见的任务,无论是在日常开发还是系统集成中都扮演...在实际应用中,可能还需要考虑错误处理、文件权限、网络文件复制等复杂情况,但这些基础操作为理解和处理这些问题提供了起点。

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

    在Java编程语言中,文件复制是一项常见的操作,可以用于备份数据、迁移文件或者在程序中处理数据。IO(Input/Output)流是Java提供的一种处理输入输出数据的方式,包括读取和写入文件。本篇文章将详细介绍如何使用...

    java对文件的复制和删除(文件夹、文件)

    在Java编程中,文件操作是常见的任务之一,包括文件的复制和删除。在这个场景中,我们看到一个名为"OperateFile"的压缩包文件,它很可能包含了一个Java类或者一个项目,用于演示如何使用Java来执行这些操作。下面将...

    java dos界面实现的简单的文件复制、创建

    例如,如果我们想在DOS界面下运行`copy`命令来复制文件,我们可以这样做: ```java String[] cmd = {"cmd.exe", "/c", "copy", "source.txt", "destination.txt"}; try { Process process = Runtime.getRuntime()....

    Large-File-Processing-master_javanio_java大文件处理_

    综上所述,“Large-File-Processing-master_javanio_java大文件处理_”项目涵盖了Java NIO在大文件处理中的核心技术和最佳实践,是学习和研究Java高效处理大文件的宝贵资源。通过深入理解这些知识点,并结合项目中的...

    java上传文件jar

    它们提供了丰富的功能,帮助开发者安全、高效地完成文件上传操作,同时也大大减少了处理文件上传时可能出现的问题。在实际项目中,务必合理利用这两个库,遵循最佳实践,确保上传过程的稳定性和安全性。

    Java文件批量处理程序

    Java 文件批量处理程序是一款基于 Java 平台的文件批量处理工具,旨在提供一个高效、便捷、可靠的文件批量处理解决方案。该程序主要实现了新建文件、复制、移动、删除、解压缩及分割/合并文件等功能,满足了用户对...

    java 移动文件.

    FileOperate 是一个文件操作工具类,提供了多种文件操作方法,包括新建目录、新建文件、复制文件、剪切文件等。 `public class FileOperate {` `public static void main(String args[]){` `newFolder("D:/100");` ...

    java 文本文件 支持新建,打开,复制,剪切...

    Java的NIO(非阻塞I/O)提供了一种更高效的方式来处理文件操作,特别是当处理大量文件或大文件时。`java.nio`包提供了一组新的类,如`FileChannel`,`ByteBuffer`等,它们可以在不阻塞主线程的情况下进行I/O操作。 ...

    以文件流的方式复制文件

    在本例中,我们使用文件流的方式来复制文件。 三、使用文件流复制文件的步骤 1. 创建文件输入流对象,用于读取源文件的内容。 2. 创建文件输出流对象,用于写入目标文件的内容。 3. 使用read()方法读取源文件的...

    java文件上传ar包

    在处理文件上传时,可能需要使用这个库来读取、写入、复制、删除文件,或者进行其他I/O操作。 4. **多部分请求(Multipart Request)**: 文件上传通常涉及HTTP协议中的多部分请求。这种请求允许在一个请求中发送...

    java文件操作

    `FileUtils`类中的`copyFile()`方法是其核心功能之一,它提供了从一个位置复制文件到另一个位置的便捷方式。这个方法有多个重载版本,可以根据实际需求选择合适的方法。例如,`copyFile(File sourceFile, File ...

Global site tag (gtag.js) - Google Analytics