实例讲述Java IO文件复制

前言:IO流主要分为两大类,分别是字节流与字符流

注意:

1、音频文件、图片、视频(范围广),就用字节流

2、只涉及到文本的,就用字符流

使用字节流复制文本内容(其他文件也可以)

代码如下:

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 CopyFile {
  public static void main(String[] args) {
    try{
      File inFile=new File("src.txt"); //源文件
      InputStream in=new FileInputStream(inFile); //文件输入流

      File outFile=new File("tar.txt"); //目标文件
      OutputStream out=new FileOutputStream(outFile); //文件输出流
      byte[] buff=new byte[1024]; //创建缓冲区,分配1024个字节大小的内存给buff
      int num=0;
      while((num=in.read(buff))!=-1){ //判断每次读取的最大字节数是否为1024
        out.write(buff,0,num);
//        out.write(buff); //这样也可以,不过容易造成文件内容不正确
        out.flush(); //刷新缓冲区
        String s=new String(buff);
        System.out.println("文件内容复制成功");
        System.out.println("文件复制内容为\n"+s);
      }
      in.close(); //关闭输入流
      out.close(); //关闭输出流
//      inFile.delete(); //删除源文件
//      outFile.renameTo(new File("reName.txt")); //输出文件重命名
    }
    catch(FileNotFoundException e){
      e.printStackTrace(); //在命令行打印异常信息在程序中出错的位置及原因
    }
    catch(IOException e){
      e.printStackTrace();
    }
  }
}

使用字符流复制文本内容(仅限文本文件)

代码如下:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class CopyFile{
  public static void main(String[] args) {
    try{
      File inFile=new File("D:/src.txt"); //源文件
      FileReader fileReader=new FileReader(inFile); //读取文件字符流
      BufferedReader bufferedReader=new BufferedReader(fileReader); //把读取到的字符流放入缓存

      File outFile=new File("D:/tar.txt"); //目标文件
      FileWriter fileWrite=new FileWriter(outFile); //写入字符流
      BufferedWriter bufferedWriter=new BufferedWriter(fileWrite); //把要输入的字符流放入缓存
      String s="";
      String str = "";
      while((s=bufferedReader.readLine())!=null){ //判断文件字符流是否读取完毕
        bufferedWriter.write(s); //字符流缓存写入文件
        bufferedWriter.newLine(); //按行读取,遇到换行符则换行
        bufferedWriter.flush(); //刷新缓存
        str+=s;
      }
      System.out.println("文件复制内容为\n"+str);
      //关闭输入输出流
      fileReader.close();bufferedReader.close();
      fileWrite.close();bufferedWriter.close();
//      inFile.delete(); //删除源文件
//      outFile.renameTo(new File("reName.txt")); //输出文件重命名
    }
    catch(FileNotFoundException e){
      e.printStackTrace(); //在命令行打印异常信息在程序中出错的位置及原因
    }
    catch(IOException e){
      e.printStackTrace();
    }
  }
}

说明:

如果想以追加文件内容,而不是覆盖的方式来复制文本内容,则修改如下

OutputStream out=new FileOutputStream(outFile,true); //字节流
FileWriter fileWrite=new FileWriter(outFile,true); //字符流

如果要在字符流指定缓存区大小,则修改如下

BufferedWriter bufferedWriter=new BufferedWriter(fileWrite,1024);

您可能感兴趣的文章:

  • Java文件读写IO/NIO及性能比较详细代码及总结
  • java IO流将一个文件拆分为多个子文件代码示例
  • JDK1.7 之java.nio.file.Files 读取文件仅需一行代码实现
  • Java NIO Path接口和Files类配合操作文件的实例
  • Java探索之Thread+IO文件的加密解密代码实例
  • Java中IO流文件读取、写入和复制的实例
  • JAVA通过HttpURLConnection 上传和下载文件的方法
  • Java文件(io)编程之记事本开发详解
  • Java文件(io)编程之文件字符流使用方法详解
  • Java文件(io)编程_文件字节流的使用方法
  • Java文件(io)编程_基于File类的基本用法(必看篇)
  • Java IO文件后缀名过滤总结
(0)

相关推荐

  • JDK1.7 之java.nio.file.Files 读取文件仅需一行代码实现

    JDK1.7中引入了新的文件操作类java.nio.file这个包,其中有个Files类它包含了很多有用的方法来操作文件,比如检查文件是否为隐藏文件,或者是检查文件是否为只读文件.开发者还可以使用Files.readAllBytes(Path)方法把整个文件读入内存,此方法返回一个字节数组,还可以把结果传递给String的构造器,以便创建字符串输出.此方法确保了当读入文件的所有字节内容时,无论是否出现IO异常或其它的未检查异常,资源都会关闭.这意味着在读文件到最后的块内容后,无需关闭文件.要注意

  • Java文件(io)编程之文件字符流使用方法详解

    本文实例为大家分享了文件字符流的使用方法,供大家参考,具体内容如下 案例1: 读取一个文件并写入到另一个文件中,char[] 来中转. 首先要在E盘下创建一个文本文档,命名为test.txt,输入一些字符串. public class Demo_5 { public static void main(String[] args) { FileReader fr=null; //文件取出字符流对象(输入流) FileWriter fw=null; //写入到文件(输出流) try { fr=new

  • Java IO文件后缀名过滤总结

    实现效果:列出某个目录下的特定后缀名文件(如,列出D盘根目录下txt后缀的文件) import java.io.File; import java.io.FilenameFilter; public class QueryFile implements FilenameFilter{ String extension; //文件扩展名 public QueryFile(String extension){ this.extension="."+extension.toLowerCase

  • Java探索之Thread+IO文件的加密解密代码实例

    这篇文章向大家分享了几段代码,主要是关于Thread+IO文件的加密解密,下面看看具体代码: 加密启动线程 package com.hz.subsection; import java.io.File; public class enCodeFileThread extends Thread { public Files files; public File file; public File dst; public enCodeFileThread(String name,Files file

  • JAVA通过HttpURLConnection 上传和下载文件的方法

    本文介绍了JAVA通过HttpURLConnection 上传和下载文件的方法,分享给大家,具体如下: HttpURLConnection文件上传 HttpURLConnection采用模拟浏览器上传的数据格式,上传给服务器 上传代码如下: package com.util; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.DataOutputStream; import java

  • Java中IO流文件读取、写入和复制的实例

    //构造文件File类 File f=new File(fileName); //判断是否为目录 f.isDirectory(); //获取目录下的文件名 String[] fileName=f.list(); //获取目录下的文件 File[] files=f.listFiles(); 1.Java怎么读取文件 package com.yyb.file; import java.io.File; import java.io.FileInputStream; import java.io.In

  • Java文件(io)编程_文件字节流的使用方法

    案例1: 演示FileInputStream类的使用(用FileInputStream的对象把文件读入到内存) 首先要在E盘新建一个文本文件,命名为test.txt,输入若干字符 public class Demo_2 { public static void main(String[] args) { File f=new File("e:\\test.txt"); //得到一个文件对象f,指向e:\\test.txt FileInputStream fis=null; try {

  • Java文件读写IO/NIO及性能比较详细代码及总结

    干Java这么久,一直在做WEB相关的项目,一些基础类差不多都已经忘记.经常想得捡起,但总是因为一些原因,不能如愿. 其实不是没有时间,只是有些时候疲于总结,今得空,下定决心将丢掉的都给捡起来. 文件读写是一个在项目中经常遇到的工作,有些时候是因为维护,有些时候是新功能开发.我们的任务总是很重,工作节奏很快,快到我们不能停下脚步去总结. 文件读写有以下几种常用的方法 1.字节读写(InputStream/OutputStream) 2.字符读取(FileReader/FileWriter) 3.

  • Java文件(io)编程之记事本开发详解

    本文实例为大家分享了Java开发简易记事本的具体代码,供大家参考,具体内容如下 public class NotePad extends JFrame implements ActionListener{ //定义需要的组件 JTextArea jta=null; //多行文本框 JMenuBar jmb=null; //菜单条 JMenu jm1=null; //菜单 JMenuItem jmi1=null,jmi2=null; //菜单项 public static void main(St

  • Java文件(io)编程_基于File类的基本用法(必看篇)

    1.首先了解文件流的相关概念: 2.文件File类的基本用法 public class Demo_1 { public static void main(String[] args) { //创建一个文件对象 File f=new File("e:\\aa.txt"); //得到文件的路径 System.out.println("文件路径:"+f.getAbsolutePath()); //得到文件的大小,字节数 System.out.println("文

  • java IO流将一个文件拆分为多个子文件代码示例

    文件分割与合并是一个常见需求,比如:上传大文件时,可以先分割成小块,传到服务器后,再进行合并.很多高大上的分布式文件系统(比如:google的GFS.taobao的TFS)里,也是按block为单位,对文件进行分割或合并. 看下基本思路: 如果有一个大文件,指定分割大小后(比如:按1M切割) step 1: 先根据原始文件大小.分割大小,算出最终分割的小文件数N step 2: 在磁盘上创建这N个小文件 step 3: 开多个线程(线程数=分割文件数),每个线程里,利用RandomAccessF

  • Java NIO Path接口和Files类配合操作文件的实例

    Path接口 1.Path表示的是一个目录名序列,其后还可以跟着一个文件名,路径中第一个部件是根部件时就是绝对路径,例如 / 或 C:\ ,而允许访问的根部件取决于文件系统: 2.以根部件开始的路径是绝对路径,否则就是相对路径: 3.静态的Paths.get方法接受一个或多个字符串,字符串之间自动使用默认文件系统的路径分隔符连接起来(Unix是 /,Windows是 \ ),这就解决了跨平台的问题,接着解析连接起来的结果,如果不是合法路径就抛出InvalidPathException异常,否则就

随机推荐