java IO 字节流的使用

来源:互联网 发布:校园打铃软件 编辑:程序博客网 时间:2024/06/06 00:16

之前学习到的字符流可以处理字符数据,但是对于其他类型的数据就无能为力了,比如想要复制MP3文件怎么办呢?这个时候需要使用的是字节流类来处理。在API当中找到了两大类:InputStream、OutputStream,这是所有字节输入/输入流的所有类的超类。至于其具体使用方法,和字符流的做法是一样的,在此不复述。


在这里通过实现复制MP3文件的四种方法来体现字节流的具体使用方法:

/**   * @Title: byteStreamDemo.java * @Package byteStream * @author Shaw   * @date 2014年12月22日 下午8:16:34 * @version V1.0   */package byteStream;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;/**  * @ClassName: byteStreamDemo  * @Description: TODO(尝试字节流复制文件的四种方法)  * @author Shaw  * @date 2014年12月22日 下午8:16:34  *   */public class byteStreamDemo {/**  * @Title: main  * @Description: TODO(尝试字节流复制文件的四种方法)  * @param @param args    设定文件  * @return void    返回类型  * @throws IOException  */public static void main(String[] args) throws IOException {// TODO Auto-generated method stubcopy_1();copy_2();copy_3();copy_4();}private static void copy_4() throws IOException {//最不要用的方法,电脑会死机的FileInputStream fis = new FileInputStream("WangFei.mp3");FileOutputStream fos = new FileOutputStream("WangFei_copy4.mp3");int ch = 0;while ((ch = fis.read())!= -1) {fos.write(ch);//bops.flush();}fos.close();fis.close();}private static void copy_3() throws IOException {// 自定义一个刚刚好一次读完的缓冲区,一次性读取完毕//不建议使用,当需要复制的文件比较大的时候不合适FileInputStream fis = new FileInputStream("WangFei.mp3");FileOutputStream fos = new FileOutputStream("WangFei_copy3.mp3");byte[] buf = new byte[fis.available()];fis.read(buf);fos.write(buf);fos.close();fis.close();}private static void copy_2() throws IOException {// 使用缓冲区类,一个一个读;速度还好FileInputStream fis = new FileInputStream("WangFei.mp3");BufferedInputStream bips = new BufferedInputStream(fis);FileOutputStream fos = new FileOutputStream("WangFei_copy2.mp3");BufferedOutputStream bops = new BufferedOutputStream(fos);int ch = 0;while ((ch = bips.read())!= -1) {bops.write(ch);//bops.flush();}bops.close();bips.close();}public static void copy_1() throws IOException {// 自定义缓冲区,建议使用FileInputStream fis = new FileInputStream("WangFei.mp3");FileOutputStream fos = new FileOutputStream("WangFei_copy.mp3");byte[] buf = new byte[1024];int len = 0;while ((len = fis.read(buf))!= -1) {fos.write(buf,0,len);fos.flush();}fis.close();fos.close();}}


0 0
原创粉丝点击