一、分类
java中的流分为字节流和字符流,按照流向也可以分为输入流和输出流。
字符流和字节流的使用范围:字节流一般用来处理图像,视频,以及PPT,Word类型的文件。字符流一般用于处理纯文本类型的文件,如TXT文件等,字节流可以用来处理纯文本文件,但是字符流不能用于处理图像视频等非文本类型的文件。
处理流BufferedReader,BufferedWriter,BufferedInputStream
,BufferedOutputsStream,都要包上一层节点流。也就是说处理流是在节点流的基础之上进行的,带有Buffered的流又称为缓冲流,缓冲流处理文件的输入输出的速度是最快的。所以一般缓冲流的使用比较多。
package com.javaBase.IO;import java.io.*;/** * 〈一句话功能简述〉; * 〈功能详细描述〉 * * @author jxx * @see [相关类/方法](可选) * @since [产品/模块版本] (可选) */public class BufferFileCopy { public static void main(String[] args){ File src = new File("1.txt"); File dest = new File("2.txt"); fileCopy2(src,dest); } /** * 使用字符流文件复制 * @param src * @param dest */ public static void fileCopy1(File src, File dest) { FileReader fr = null; FileWriter fw = null; BufferedReader br = null; BufferedWriter bw = null; try { fr = new FileReader(src); fw = new FileWriter(dest); br = new BufferedReader(fr); bw = new BufferedWriter(fw); String str = null; while ((str = br.readLine()) != null) { bw.write(str); bw.newLine(); bw.flush(); } } catch (Exception e) { e.printStackTrace(); } finally { try { if(br != null) br.close(); if(bw != null) bw.close(); if(fw != null) fw.close(); if(fr != null) fr.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 使用字节流文件复制 * @param src * @param dest */ public static void fileCopy2(File src, File dest) { FileInputStream fis = null; FileOutputStream fos = null; BufferedInputStream bis = null; BufferedOutputStream bos = null; try { fis = new FileInputStream(src); fos = new FileOutputStream(dest); bis = new BufferedInputStream(fis); bos = new BufferedOutputStream(fos); int len; byte[] b = new byte[1024]; while((len = bis.read(b)) != -1) { //bis.read(b) 将读取的字节写入数组,返回写入的长度(len),最长写入1024个字节 bos.write(b,0,len); bos.flush(); } } catch (Exception e) { e.printStackTrace(); } finally { try { if(fis != null) fis.close(); if(fos != null) fos.close(); if(bis != null) bis.close(); if(bos != null) bos.close(); } catch (IOException e) { e.printStackTrace() ; } } }}
来源:https://www.cnblogs.com/jxxblogs/p/IO.html