黑马程序员技术交流社区

标题: IO流,转换流 [打印本页]

作者: 霍振鹏    时间: 2014-3-23 13:25
标题: IO流,转换流
众所周知,如果要从硬盘上读取一个mp3文件,必须用字节流来读取,可是我现在想用字符流中的一些方法,于是我用转换流将字节流转换为字符流
   待读取完成后,我在用相应的编码方式将字符流转换为字节流存放在硬盘上,不知是否可行?
作者: 多一点    时间: 2014-3-23 14:47
本帖最后由 多一点 于 2014-3-23 14:53 编辑


               
                       String line =null;
                       BufferedReader    buffr = new BufferedReader(new InputStreamReader(new FileInputStream("读文件")));//读MP3
                        
                        BufferedWriter buffw =new BufferedWriter(new OutputStreamWriter(new FileOutputStream("写文件")));//写入硬盘
                        
                        
                                while((line=buffr.readLine())!=null){
                                        buffw.write(line, 0, line.length());
                                        buffw.flush();
                                       
                                }
                     
                  buffr.close();
                  buffw.close();

作者: Amorvos    时间: 2014-3-23 15:45
楼主的意思是文件拷贝吗,如果你这么干,拷贝的MP3文件会出问题
  1. import java.io.BufferedReader;
  2. import java.io.BufferedWriter;
  3. import java.io.FileInputStream;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.InputStreamReader;
  7. import java.io.OutputStreamWriter;

  8. public class InputStreamWriterDemo {

  9.         public static void main(String[] args) throws IOException {
  10.                 BufferedReader bReader = new BufferedReader(new InputStreamReader(
  11.                                 new FileInputStream("a.mp3")));
  12.                 BufferedWriter bWriter = new BufferedWriter(new OutputStreamWriter(
  13.                                 new FileOutputStream("coppy.mp3")));

  14.                 long start = System.currentTimeMillis();
  15.                 int count;
  16.                 while ((count = bReader.read()) != -1) {
  17.                         bWriter.write(count);
  18.                 }
  19.                 long end = System.currentTimeMillis();
  20.                 bReader.close();
  21.                 bWriter.close();
  22.                 System.out.println(end - start);

  23.         }

  24. }
复制代码

作者: H-Deka    时间: 2014-3-23 16:20

package com.io;
import java.io.*;
public class CopyMp3 {
/**
  * @param args
  * 演示MP3的复制,通过缓冲区
  * BufferedOutputStream
  * BufferedInputStream
  *
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub

  copy_1();

}

//通过字节流的缓冲区完成复制
public static void copy_1()
{
  BufferedOutputStream bufos = null;
  BufferedInputStream bufis  = null;
  
  try{
   bufos = new BufferedOutputStream(new FileOutputStream("E:\\黑豹.mp3"));
   bufis  = new BufferedInputStream(new FileInputStream("E:\\黑豹-无地自容.mp3"));
   
   int len = 0;
   
   while((len=bufis.read())!=-1)
   {
    bufos.write(len);
   }
  }
  catch(IOException e){
   throw new RuntimeException("读取失败!");
  }
  finally{
    try{
     if(bufis!=null)
      bufis.close();
    }
    catch(IOException e){
      throw new RuntimeException("读取缓冲区关闭失败!");
    }
   
    try{
     if(bufos!=null)
      bufos.close();
    }
    catch(IOException e){
      throw new RuntimeException("写入缓冲区关闭失败!");
    }
  }
}
}


作者: 霍振鹏    时间: 2014-3-23 16:31
我开始是这样想的,先用GBK对源文件字节输入流进行编码,再往目的写入的时候,再次用GBK进行解码,感觉可以,可是出错了。
  1. import java.io.BufferedReader;

  2. import java.io.BufferedWriter;
  3. import java.io.FileInputStream;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileOutputStream;
  6. import java.io.FileReader;
  7. import java.io.FileWriter;
  8. import java.io.InputStreamReader;
  9. import java.io.OutputStreamWriter;


  10. public class CopyMp3 {

  11.         /**
  12.          * @param args
  13.          * @throws FileNotFoundException
  14.          */
  15.         public static void main(String[] args) throws Exception {
  16.                 // TODO Auto-generated method stub
  17.                 InputStreamReader isr=new InputStreamReader(new FileInputStream("zhangjie.mp3"),"GBK");
  18.                 BufferedReader br=new BufferedReader(isr);
  19.                 OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("copy.mp3"),"GBK");
  20.                 BufferedWriter bw=new BufferedWriter(osw);
  21.                 String str=null;
  22.                 while((str=br.readLine())!=null)
  23.                 {
  24.                         bw.write(str);
  25.                        
  26.                 }
  27.                 bw.flush();
  28.                 br.close();
  29.                 bw.close();
  30.                
  31.                

  32.         }

  33. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2