易错的地方:
/** 出错的地方: * 1.缓冲流儿输出时,务必:flush();不然可能输出不尽! * 2. bw缓冲字符输出流,记得这里! bw.write(b,0,len); * 3.字符流不能复制除 纯文本文件 以外的其他文件,不然会损坏!! * *1.对于非文本文件(视频/音频/图片)使用, 只能使用(字节)byte流! 也可以使用转换流提高速度233 * * 2.对于文本文件 ,大型文件的话,建议使用字符流(FileReaderWriter)! */
总的笔记:
/** 出错的地方: * 1.缓冲流儿输出时,务必:flush();不然可能输出不尽! * 2. bw缓冲字符输出流,记得这里! bw.write(b,0,len); * 3.字符流不能复制除 纯文本文件 以外的其他文件,不然会损坏!! * *1.对于非文本文件(视频/音频/图片)使用, 只能使用(字节)byte流! 也可以使用转换流提高速度233 * * 2.对于文本文件 ,大型文件的话,建议使用字符流(FileReaderWriter)! */ /**字符流处理步骤: * ①声明②加载地址③read/write④close流) *---------------------------------------------------------------------------- * 缓冲流(处理流的一种,相较于加速之前的操作) * BufferedInputStream read() * BufferedOutputStream write(),flush():刷新一次,确保输出完 * BufferedReader readLine(): 复制一行! * BufferedWriter flush() //刷新一次,确保输出完
三种方式:
//实验1: 同时使用FileReader / FileWriter 进行文本文件的复制,不支持中文!
@Test //实验1: 同时使用FileReader / FileWriter 进行文本文件的复制,不支持中文! public void testFileReaderWriter() throws IOException { FileReader fr=null; FileWriter fw=null; File src=new File("D:\SZS文件夹\IO\hello.txt"); File dest=new File("D:\SZS文件夹\IO\复制的hello.txt"); try { fr=new FileReader(src); fw=new FileWriter(dest); char[] ch= new char[10]; int len=0; while((len=fr.read(ch))!=-1 ){ fw.write(ch); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { fr.close(); fw.close(); } }
//实验2: 同时使用BufferInputStream和BufferOutputStream进行图片 的复制
@Test //实验2: 同时使用BufferInputStream和BufferOutputStream进行图片 的复制 public void testBufferStream() throws IOException{ //①声明②加载字节流,缓冲流③read/write④close缓冲流) File src=new File("D:\SZS文件夹\IO\TIM截图20181017161349.png"); File dest=new File("D:\SZS文件夹\IO\复制的TIM截图.png"); FileInputStream fis= new FileInputStream(src); FileOutputStream fos = new FileOutputStream(dest); BufferedInputStream bis=new BufferedInputStream(fis); BufferedOutputStream bos=new BufferedOutputStream(fos); byte[] b=new byte[1024]; int len; while((len=bis.read(b))!=-1) bos.write(b,0,len); bis.close(); bos.close(); }
//实验3: 同时使用BufferedReader 和 BufferedWriter 进行文本的复制
@Test //实验3: 同时使用BufferedReader 和 BufferedWriter 进行文本的复制 public void testBufferedReaderWriter() throws IOException{ File src=new File("D:\SZS文件夹\IO\hello.txt"); File dest=new File("D:\SZS文件夹\IO\BufferedReaderWriter复制的hello.txt"); //①声明②将地址加载进字符流,将字符流加载进缓冲流③read/write④close缓冲流) FileReader fis= new FileReader(src); FileWriter fos = new FileWriter(dest); BufferedReader bs=new BufferedReader(fis); BufferedWriter bw=new BufferedWriter(fos); char[] b=new char[1024]; int len; while((len=bs.read(b))!= -1) { bw.write(b,0,len); } bw.flush(); bs.close(); bs.close(); }
学习视频地址:http://www.gulixueyuan.com/course/39/task/497/show