java.io流--复制文件

主要分为字节流和字符流:

说明 字节流 字符流
抽象基类 InputStream,OutputStream Reader,Writer
节点流 FileInputStream,FileOutputStream FileReader,FileWriter
缓冲流 BufferdInputStream,BufferdOutputStream BufferdReader,BufferdWriter
转换流   InputStreamReader,OutputStreamWriter
     
     

* FileInputStream和BufferdInputStreamd包含同样的方法,FileOutputStream和BufferdOutputStream用法相同,只不过前者会清空文件内容写入,后者会在原来的文件内容后面追加

* BufferdReader提供了一个缓冲区,可以一次读一整行(readLine())

* inputStreamReader / outPutStreamReader  可以把字节流转换为字节流

字节流实现文件复制

/**
 * 字节流,读写以byte为单位
 * Created on 2018年9月5日<br>
 */
public class ByteTest {
    public static void main(String[] args) throws IOException  {
        File file = new File("C:/Users/26725/Desktop/test.txt");
        File file1 = new File("C:/Users/26725/Desktop/testout.txt");
        if (!file.exists()) {
            file.createNewFile();
        }
        FileInputStream fis = new FileInputStream(file);
        FileOutputStream fos = new FileOutputStream(file1);
        byte[] buffer = new byte[4];
        int length;
        while(-1!= (length=fis.read(buffer))){
            String s = new String(buffer,0,length);
            //每次读完都需要清空buffer
            byte[] bytes = s.getBytes();
            fos.write(bytes);
        }
        fis.close();
        fos.close();
    }
}

字符流实现文件复制

/**
 * 字符流,读写以char为单位,速度更快
 * Created on 2018年9月5日<br>
 */
public class CharTest {
    public static void main(String[] args) throws IOException{
        File file = new File("C:\\Users\\26725\\Desktop\\test.txt");
        File file2 = new File("C:\\Users\\26725\\Desktop\\testout.txt");
        //因为乱码,通过inputStreamReader和OutputStreamWriter转码
        InputStreamReader isr = new InputStreamReader(new FileInputStream(file) ,"utf-8");
        BufferedReader reader = new BufferedReader(isr);
        BufferedWriter writer = new  BufferedWriter(new OutputStreamWriter(new FileOutputStream(file2),"utf-8"));
        char[]  chars = new char[2];
        int length;
        while (-1!=(length=reader.read(chars))) {
            String s  = new String(chars,0,length);
            writer.write(s);
        }
        reader.close();
        writer.close();
    }
}

猜你喜欢

转载自blog.csdn.net/stonennnn/article/details/82418886