黑马程序员技术交流社区
标题:
转换流复制mp3和图片为什么会数据丢失
[打印本页]
作者:
zfgrinm
时间:
2015-3-3 15:15
标题:
转换流复制mp3和图片为什么会数据丢失
package d19;
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 abstract class Test {
public static void main(String[] args) throws IOException {
// TODO 自动生成的方法存根
BufferedReader bufr =
new BufferedReader(new InputStreamReader(new FileInputStream("1.txt")));
BufferedWriter bufw=
new BufferedWriter(new OutputStreamWriter(new FileOutputStream("2.txt")));
String s=null;
while((s=bufr.readLine())!=null)
{
bufw.write(s);
bufw.newLine();
bufw.flush();
}
bufr.close();
bufw.close();
}
}
复制代码
用转换流复制mp3和jpg为什么会发生数据丢失,而复制txt则不会丢失呢?是我代码的问题吗?
23.png
(13.57 KB, 下载次数: 13)
下载附件
2015-3-3 15:13 上传
作者:
alvis2015
时间:
2015-3-3 15:28
我的入学考试里就遇到了这个问题,但是没人解答。我的问题还挂在那里。
作者:
田得聖老师
时间:
2015-3-3 15:33
字符流=字节流+编码表
字符流转换成字节流是没有问题的 因为每一个字符都有自己的编码
相反就不一定了
作者:
绝望
时间:
2015-3-3 15:38
图片和声音是不能用字符流处理的,因为被编码了
作者:
关山明月
时间:
2015-3-3 16:00
一般的如果能用记事本打开的可以读懂的就用字符流。像txt、java 等,但是像mp3、jpeg、avi 等需要特定程序打开的文件一般都是需要用字节流的。
作者:
linuxpara910829
时间:
2015-3-3 16:18
你问题不少啊 你的类为什么要申明抽象 把抽象关键字去了
你肯定没好好学习毕老师的课
你用的字符流缓冲区 怎么能复制字节数据 这样用肯定出问题的
改成字节流缓冲区
你用字节流赋值字符也是没问题的 默认的是GBK 如果有问题指定下字符编码就行
作者:
shuren2015
时间:
2015-3-3 17:41
这个abstract真的好亮!
作者:
zfgrinm
时间:
2015-3-3 18:25
shuren2015 发表于 2015-3-3 17:41
这个abstract真的好亮!
这是个意外...:sleepy:
作者:
z47057554
时间:
2015-3-3 21:15
将字节流通过转换流读入的时候是编码的过程,会按照转换流指定或默认的编码表转换,这个编码表仅能识别字符,并将相应的字符按编码规则转换成码表上的值存储,它不是按照数据的原本模样存储的,所以文本可以被相应的码表正确识别并转换,文件存储的是按码表转换后的值,再输出的时候(即你用文本查看软件的时候),此时是解码的过程 ,文本查看软件会按照相应的码表再转换成字符显示。这是为什么字符可以用转换流
而其他文件类型不能用,是因为转换流的码表不能正确识别这些数据,在编码的时候,数据不能被正确转换,所以生成文件在这一步就已经丢失数据了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2