采用字节流进行文件的复制

  • IO流分类:
    采用字节流进行文件的复制_第1张图片

  • 字符流能干的字节流都能干,字节流能干的字符流不一定能。

  • 视频图片音频复制等要用字节流。
  • 文本文件复制等通常采用字符流的方式。

  • 采用字符流

package bull1711.CopyIO;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/*
 * 文件的复制
 */
public class IODemo1 {
    public static void main(String[] args) throws IOException {
        //创建输出流对象
        FileWriter fw = new FileWriter("IODemo1.txt");
        //创建输入流对象
        FileReader fr = new FileReader("RecursiveDemo1.java");

        //一次读写一个字符
        int ch;
        while((ch = fr.read()) != -1) {
            fw.write(ch);
            fw.flush();
        }

        //一次读写一个字符数组
        char[] str = new char[1024];
        int len;
        while((len = fr.read(str)) != -1) {
            fw.write(str,0,len);
            fw.flush();
        }
        //释放资源
        fw.close();
        fr.close();
    }
}
  • 采用字节流
package bull1711.CopyIO;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/*
 * 字节流
 */
public class IODemo2 {
    public static void main(String[] args) throws IOException {
        //创建字节输入流对象
        FileInputStream fis = new FileInputStream("RecursiveDemo1.java");
        //创建字节输出流对象
        FileOutputStream fos = new FileOutputStream("IODemo2.txt");

        //一次读写一个字节
        int ch;
        while((ch = fis.read()) != -1) {
            fos.write(ch);
            fos.flush();
        }

        //一次读写一个字节数组
        byte[] by = new byte[1024];
        int len;
        while((len = fis.read(by)) != -1) {
            fos.write(by,0,len);
            fos.flush();
        }

        fis.close();
        fos.close();
    }
}
  • 采用字节流复制图片
package bull1711.CopyIO;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/*
 * 采用字节流复制图片
 * 
 * 二进制文件(使用windows自带记事本读不懂的)只能用字节流进行复制
 * 文本文件既可用字节流也可用字符流
 */
public class IODemo3 {
    public static void main(String[] args) throws IOException {
        //创建输入流对象
        FileInputStream fis = new FileInputStream("1.jpg");
        //创建输出流对象
        FileOutputStream fos = new FileOutputStream("copyD3.jpg");

        //一次读写一个字节数组
        byte[] by = new byte[1024];
        int len;
        while((len = fis.read(by)) != -1) {
            fos.write(by,0,len);
        }

        //释放资源
        fis.close();
        fos.close();
    }

}
  • 采用字节流复制文本文件
package bull1711.CopyIO;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/*
 * 使用字节流复制文本文件
 */
public class IODemo4 {
    public static void main(String[] args) throws IOException {
        //创建输出流对象
        FileOutputStream fos = new FileOutputStream("IODemo4.txt");
        //创建输入流对象
        FileInputStream fis = new FileInputStream("IODemo2.txt");

        //一次读写一个字节
        int ch;
        while((ch = fis.read()) != -1) {
            fos.write(ch);
            fos.flush();
        }

        //一次读写一个字节数组
        byte[] by = new byte[1024];
        int len;
        while((len = fis.read(by)) != -1) {
            fos.write(by, 0, len);
            fos.flush();
        }

        //释放资源
        fis.close();
        fos.close();
    }
}

你可能感兴趣的:(JAVA基础)