使用FileInputStream和FileOutputStream实现文件复制

  • Post author:
  • Post category:其他




文件字节流FileInputStream 和 FileOutputStream

  • FileInputStream 和 FileOutputStream是字节流,是节点流,数据源和目的地是文件
  • 复制文件需要分创建一个输入流和输出流完成文件读写
  • 需要创建一个中转站,借助循环和中转站完成复制



第一种方式(是一个字符)

package IO;

/**
 * 使用FileInputStream和FileOutputStream实现文件复制
 *
 * 1.如何创建流
 * InputStream fis = new FileInputStream()
 *
 *
 *
 * 2.如何使用流
 * 准备一个中转站,借助循环和中转站,使用输入流和输出流完成复制
 * int n;
 * n = fis.read();
 *
 * 3.(使用完后一定要关闭流)
 */

import java.io.*;

public class TestFileStream {
    public static void main(String[] args) throws IOException {
        //1.创建流
//        File file = new File("D:\\read.txt");
//        InputStream fis = new FileInputStream(file);
//        File file1 = new File("D:\\read1.txt");
//        OutputStream ots = new FileOutputStream(file1);
        /**
         * 简写创建流
         */
//        InputStream fis = new FileInputStream(new File("D:\\read.txt"));
//        OutputStream fos = new FileOutputStream(new File("D:\\read1.txt"));
        InputStream fis = new FileInputStream("D:\\read.txt");
        OutputStream fos = new FileOutputStream("D:\\\\read1.txt");

        //2.使用流
        //2.1准备一个中转站(一个字节)
        int n;
        //先读一个字节
        n = fis.read(); //读源文件的一个字节赋给n
        while (n != -1) {  //读到了数据,还没有到文件末尾
            //写一个字节
            fos.write(n);
            //在读一个字节
            n = fis.read(); //读源文件的一个字节赋给n

        }

        //3.关闭流
        fis.close();
        fos.close();


    }
}



第二种方式(使用的是字节数组)

package IO;

/**
 * 使用FileInputStream和FileOutputStream实现文件复制
 *
 * 1.如何创建流
 * InputStream fis = new FileInputStream()
 *
 *
 *
 * 2.如何使用流
 * 准备一个中转站,借助循环和中转站,使用输入流和输出流完成复制
 * int n;
 * n = fis.read();
 *
 * 3.(使用完后一定要关闭流)
 */

import java.io.*;

public class TestFileStream1 {
    public static void main(String[] args) throws IOException {
        //1.创建流
//        File file = new File("D:\\read.txt");
//        InputStream fis = new FileInputStream(file);
//        File file1 = new File("D:\\read1.txt");
//        OutputStream ots = new FileOutputStream(file1);
        /**
         * 简写创建流
         */
//        InputStream fis = new FileInputStream(new File("D:\\read.txt"));
//        OutputStream fos = new FileOutputStream(new File("D:\\read1.txt"));
          InputStream fis = new FileInputStream("D:\\read.txt");
          OutputStream fos = new FileOutputStream("D:\\read1.txt");

        //2.使用流
        //2.1准备一个中转站(一个字节)
        byte[] buf = new byte[1024];
        //先读一个字节
        int len = fis.read(buf); //使用输入流读取文件,将读到的内容放入到buf字节数组中,返回的是真正读取的字节
        while (len != -1) { //读到了数据,还没有到文件末尾
            //将字节数组的内容写入目的文件
            fos.write(buf, 0, len);
            //在读一次
            len = fis.read(buf);
        }
        //3.关闭流
        fis.close();
        fos.close();

    }
}



版权声明:本文为weixin_50644212原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。