java基础知识回顾之javaIO类---FileInputStream和FileOutputStream字节流复制图片
package com.lp.ecjtu; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; /** * * @author Administrator * 1.用字节读取流对象和图片相关联(输入流) * 2.用字节写入流对象创建一个图片文件。用于存储获取到的图片数据(输出流) * 3.通过循环读写,完成数据的储存 * 4.关闭资源 * */ public class CopyPicStream { /** * @param args */ public static void main(String[] args) { FileInputStream fis = null; FileOutputStream fos = null; try { fis = new FileInputStream("d:\\1.jpg");//读取图像数据之类的原始字节流 fos = new FileOutputStream("2.bmp");//用于写入诸如图像数据之类的原始字节流 byte[] b = new byte[1024]; int len = 0; while ((len=fis.read(b)) != -1){ fos.write(b); } }catch (FileNotFoundException e) { e.printStackTrace(); }catch (IOException e) { throw new RuntimeException("复制图片失败!"); }finally{ try { if(fis != null){ fis.close(); } } catch (IOException e) { e.printStackTrace(); } try { if(fos != null){ fos.close(); } } catch (IOException e) { e.printStackTrace(); } } } }
java基础知识回顾之javaIO类---InputStreamReader和OutputStreamWriter转化流
InputStreamReader:是字节流通向字符流的桥梁;
OutputStreamWriter 是字符流通向字节流的桥梁;
package com.lp.ecjtu; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Writer; public class SystemReadInKeyTranfer { /** * 1.源:键盘 * 目的:控制台 * 2.源:键盘录入:把键盘录入的数据存储到一个文件中 * 目的:文件 * 3.源:文件:将文件中的数据打印在控制台上 * 目的:控制台 * 流操作的基本流程: * 通过两个明确来完成 * 1 明确源和目的 * 源:输入流,InputStream Reader * 目的:输出流 :outputStream Writer * 2.操作的是否为纯文本 * 是:字符流 * 不是:字节流 * 3.当体系明确后,在明确使用哪个具体的对象。 * 通过来设备来区分: * 源设备:内存,硬盘,键盘 * 目的:内存,硬盘,控制台 * 1.将一个文本文件中的数据存储到另一个文件。复制文件。 * 源:因为是源,所以使用读取流。InputStream Reader * 是文本文件:这是可以选择Reader * 明确设备:硬盘上的一个文件 * Reader体系中可以操作文件的FileReader * 是否提高效率,是,加入Reader体系中的BufferedReader * FileReader fr = new FileReader("a.txt"); * BufferedReader buffr = new BufferedReader(fr); * * 目的:outputStream Writer * 是否为纯文本,是!用字符流 Reader. * 设备:硬盘上的文件. * Writer体系中可以操作文件的FileWriter * 是否提高效率,是,加入Writer体系中的BufferedWriter * FileWriter fr = new FileWriter("a.txt"); * BufferedWriter buffr = new BufferedWriter(fr); * * 2.将一个图片文件中的数据存储到另一个文件。复制文件。 */ public static void main(String[] args){ BufferedReader bufferr = null; BufferedWriter bufferw = null; try { //将System.in->InputStream->Reader对象 //将Reader对象包装成BufferedReader对象 //键盘录入 /*bufferr = new BufferedReader(new InputStreamReader(System.in)); //把键盘录入的数据存储到out.txt文件当中 bufferw= new BufferedWriter(new OutputStreamWriter(new FileOutputStream("out.txt"))); */ //将文件中的数据与bufferedReader相关联,InputStreamReader字节向字符转化的桥梁。 bufferr = new BufferedReader(new InputStreamReader(new FileInputStream("FileReaderDemo.java"))); //将文件的数据打印到控制台,OutputStreamWriter字符向字节转化的桥梁 bufferw = new BufferedWriter(new OutputStreamWriter(System.out)); String line = null; //采用循环的方式逐个读取 while((line=bufferr.readLine())!=null){ //如果读取的字符串为“over”的时候,则程序退出 if(line.equals("over")){ System.exit(-1);//或者用break } //打印读取的内容 //System.out.println(line.toUpperCase()); //使用字符输出流进行输出 bufferw.write(line.toUpperCase()); bufferw.newLine();//跨平台换行,不用'\r\n' bufferw.flush(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { if(bufferr != null){ bufferr.close(); } if(bufferw != null){ bufferw.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
java基础知识回顾之javaIO类---BufferedInputStream和BufferedOutputStream
MP3的复制过程:
package com.lp.ecjtu; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; /** * * @author Administrator * 演示MP3的复制 * BufferedOutputStream * BufferedInputStream * */ public class CopyMp3Stream { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { long startTime = System.currentTimeMillis(); copy_1(); long endTime = System.currentTimeMillis(); System.out.println("共耗费"+(endTime-startTime)+"毫秒"); } public static void copy_1() throws IOException{ //创建一个内部缓冲数组,读硬盘中的数据到缓冲区中,字节流缓冲区 BufferedInputStream bufIos = new BufferedInputStream(new FileInputStream("D:\\1.mp3")); BufferedOutputStream buffos = new BufferedOutputStream(new FileOutputStream("2.mp3")); int by = 0; while((by=bufIos.read()) != -1){//读取缓冲区的数据到输入流中 buffos.write(by);//对输出流进行写操作 } buffos.close(); bufIos.close(); } }