黑马程序员技术交流社区
标题:
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文件会出问题
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class InputStreamWriterDemo {
public static void main(String[] args) throws IOException {
BufferedReader bReader = new BufferedReader(new InputStreamReader(
new FileInputStream("a.mp3")));
BufferedWriter bWriter = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("coppy.mp3")));
long start = System.currentTimeMillis();
int count;
while ((count = bReader.read()) != -1) {
bWriter.write(count);
}
long end = System.currentTimeMillis();
bReader.close();
bWriter.close();
System.out.println(end - start);
}
}
复制代码
作者:
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进行解码,感觉可以,可是出错了。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class CopyMp3 {
/**
* @param args
* @throws FileNotFoundException
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
InputStreamReader isr=new InputStreamReader(new FileInputStream("zhangjie.mp3"),"GBK");
BufferedReader br=new BufferedReader(isr);
OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("copy.mp3"),"GBK");
BufferedWriter bw=new BufferedWriter(osw);
String str=null;
while((str=br.readLine())!=null)
{
bw.write(str);
}
bw.flush();
br.close();
bw.close();
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2