Java文件字节流、字符流,将一个文件内容复制并添加到另外一个文件中

//一次复制一个字节,异常处理,手动关闭流
public static void copyFile1(String srcFilename, String destFilename){
    FileInputStream fileInputStream = null;
    FileOutputStream fileOutputStream = null;
    try {
        fileInputStream = new FileInputStream(srcFilename);
        fileOutputStream = new FileOutputStream(destFilename);
        int cc = fileInputStream.read();
        //如果cc不是-1,把cc保存到目标文件中
        while (cc != -1){
            fileOutputStream.write(cc);
            cc = fileInputStream.read();
        }
    } catch (IOException e){
        e.printStackTrace();
    } finally {
        if (fileInputStream != null){
            try {
                fileInputStream.close();
            } catch (IOException e){
                e.printStackTrace();
            }
        }
        if (fileOutputStream != null){
            try {
                fileOutputStream.close();
            } catch (IOException e){
                e.printStackTrace();
            }
        }
    }
}

 

//一次复制一个字节数组,异常处理,自动关闭流
public static void copyFile2(String srcFilename, String destFilename){
    try {
        FileInputStream fileInputStream = new FileInputStream(srcFilename);
        //文件使用GBK编码,当前环境使用UTF-8编码,把字符转为GBK再读取
        InputStreamReader is = new InputStreamReader(fileInputStream,"GBK");
        FileOutputStream fileOutputStream = new FileOutputStream(destFilename,true); //true是将文件内容添加进来,不是覆盖
        //文件使用GBK编码,当前环境使用UTF-8编码,把字符转为GBK再保存
        OutputStreamWriter os = new OutputStreamWriter(fileOutputStream, "GBK");
        byte[] bytes = new byte[1024];
        int len = fileInputStream.read(bytes);
        while (len != -1){
            fileOutputStream.write(bytes,0, len);
            len = fileInputStream.read(bytes);
        }
    }catch (Exception e){
        e.printStackTrace();
    }
}

 

//文本文件复制,一次复制一个字符,异常处理,自动关闭流
public static void copyFile3(String srcFilename, String destFilename){
    try {
        FileReader fileReader = new FileReader(srcFilename);
        FileWriter fileWriter = new FileWriter(destFilename);
        int cc = fileReader.read();
        while (cc != -1){
            fileWriter.write(cc);
            cc = fileReader.read();
        }
    } catch (Exception e){
        e.printStackTrace();
    }
}

 

//文本文件复制,一次复制一个字符数组,异常处理,手动关闭流
public static void copyFile4(String srcFilename, String destFilename){
    FileReader fileReader = null;
    FileWriter fileWriter = null;
    try {
        fileReader = new FileReader(srcFilename);
        fileWriter = new FileWriter(destFilename);
        char[] contents = new char[1024];
        int len = fileReader.read(contents);
        while (len != -1){
            fileWriter.write(contents);
            len = fileReader.read(contents);
        }
    } catch (IOException e){
        e.printStackTrace();
    } finally {
        if(fileReader != null){
            try {
                fileReader.close();
            } catch (IOException e){
                e.printStackTrace();
            }
        }
        if (fileWriter != null){
            try {
                fileWriter.close();
            } catch (IOException e){
                e.printStackTrace();
            }
        }
    }
}

你可能感兴趣的:(Java文件字节流、字符流,将一个文件内容复制并添加到另外一个文件中)