A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zfgrinm 中级黑马   /  2015-3-3 15:15  /  1868 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package d19;

  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.FileInputStream;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.io.InputStreamReader;
  8. import java.io.OutputStreamWriter;

  9. public abstract class Test {

  10.         public static void main(String[] args) throws IOException {
  11.                 // TODO 自动生成的方法存根

  12.                 BufferedReader bufr =
  13.                                 new BufferedReader(new InputStreamReader(new FileInputStream("1.txt")));
  14.                 BufferedWriter bufw=
  15.                                 new BufferedWriter(new OutputStreamWriter(new FileOutputStream("2.txt")));
  16.                
  17.                 String s=null;
  18.                 while((s=bufr.readLine())!=null)
  19.                 {
  20.                         bufw.write(s);
  21.                         bufw.newLine();
  22.                         bufw.flush();
  23.                 }
  24.                
  25.                 bufr.close();
  26.                 bufw.close();
  27.         }

  28. }
复制代码
用转换流复制mp3和jpg为什么会发生数据丢失,而复制txt则不会丢失呢?是我代码的问题吗?

23.png (13.57 KB, 下载次数: 13)

23.png

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1 加油~

查看全部评分

8 个回复

倒序浏览
我的入学考试里就遇到了这个问题,但是没人解答。我的问题还挂在那里。
回复 使用道具 举报
字符流=字节流+编码表

字符流转换成字节流是没有问题的   因为每一个字符都有自己的编码
相反就不一定了

评分

参与人数 1黑马币 +2 收起 理由
万合天宜 + 2 赞一个!

查看全部评分

回复 使用道具 举报
图片和声音是不能用字符流处理的,因为被编码了

评分

参与人数 1黑马币 +1 收起 理由
万合天宜 + 1 很给力!

查看全部评分

回复 使用道具 举报
一般的如果能用记事本打开的可以读懂的就用字符流。像txt、java 等,但是像mp3、jpeg、avi 等需要特定程序打开的文件一般都是需要用字节流的。

评分

参与人数 1黑马币 +1 收起 理由
万合天宜 + 1 很给力!

查看全部评分

回复 使用道具 举报
你问题不少啊    你的类为什么要申明抽象   把抽象关键字去了  
你肯定没好好学习毕老师的课
你用的字符流缓冲区 怎么能复制字节数据   这样用肯定出问题的  
改成字节流缓冲区
你用字节流赋值字符也是没问题的  默认的是GBK   如果有问题指定下字符编码就行

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1 很给力!

查看全部评分

回复 使用道具 举报
这个abstract真的好亮!
回复 使用道具 举报
shuren2015 发表于 2015-3-3 17:41
这个abstract真的好亮!

这是个意外...:sleepy:
回复 使用道具 举报
将字节流通过转换流读入的时候是编码的过程,会按照转换流指定或默认的编码表转换,这个编码表仅能识别字符,并将相应的字符按编码规则转换成码表上的值存储,它不是按照数据的原本模样存储的,所以文本可以被相应的码表正确识别并转换,文件存储的是按码表转换后的值,再输出的时候(即你用文本查看软件的时候),此时是解码的过程 ,文本查看软件会按照相应的码表再转换成字符显示。这是为什么字符可以用转换流
而其他文件类型不能用,是因为转换流的码表不能正确识别这些数据,在编码的时候,数据不能被正确转换,所以生成文件在这一步就已经丢失数据了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马