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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 陈新海1 于 2014-8-20 18:24 编辑
  1. //老师很喜欢看乱码吗?
  2. // 创建一个文件输入流,用类的相对路径取得文件对象,
  3.                 InputStream fis = new FileInputStream(Test5.class.getResource("exercise.txt").getFile());
  4.                 byte[] buf = new byte[5]; // 创建一个缓冲区大小为5字节
  5.                 int len = 0;
  6.                 while ((len = fis.read(buf)) != -1) { // 从fis流中读取数据并存到buf数组中
  7.                         System.out.print(new String(buf, 0, len));// 每次5个字节转换为String对象
  8.                                                 // (一个字符等于一个字节,一个汉字等于两个字节)每第五个字节如果是汉字会出现乱码
  9.                 }
  10.                 fis.close();

  11. //平常是这样写的
  12. FileReader fr = new FileReader(Test5.class.getResource("exercise.txt").getFile());
  13.                 char[] buf = new char[5];
  14.                 int len = 0;
  15.                 while ((len = fr.read(buf)) != -1) {
  16.                         System.out.print(new String(buf, 0, len));                               
  17.                 }
  18.                 fr.close();
复制代码


点评

格子拉黑了我一半帖子,终于施舍了一回  发表于 2014-8-20 20:49

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1 很给力!

查看全部评分

18 个回复

倒序浏览
这不是你前两天问过的题么?让你每次读5个字节,可没让你每次打印5个字节啊。用ByteArrayInputStream就ok了
回复 使用道具 举报
fantacyleo 发表于 2014-8-20 18:27
这不是你前两天问过的题么?让你每次读5个字节,可没让你每次打印5个字节啊。用ByteArrayInputStream就ok了 ...

原来是用这个流读啊,可惜我不会你把我这题做下,有奖励哦
回复 使用道具 举报
陈新海1 发表于 2014-8-20 20:11
原来是用这个流读啊,可惜我不会你把我这题做下,有奖励哦

打错了,应该是ByteArrayOutputStream。读随便你用什么流,输出流用这个。ByteArrayOutputStream有toString方法可以指定打印时用什么字符集。提示已经非常到位了,这要再写不出来就太说不过去了。我技术分都60了,不缺什么。

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1 赞一个!

查看全部评分

回复 使用道具 举报
fantacyleo 发表于 2014-8-20 20:24
打错了,应该是ByteArrayOutputStream。读随便你用什么流,输出流用这个。ByteArrayOutputStream有toStri ...

我再看了毕老师的,看懂了又忘了,这个流真的太少用了,还是没感觉,
回复 使用道具 举报
受教了。
回复 使用道具 举报
楼主关于这道题 你最后的结果是可以显示乱码 还是不可以显示乱码 一定要按原内容输出
回复 使用道具 举报
790324255a 发表于 2014-8-26 15:07
楼主关于这道题 你最后的结果是可以显示乱码 还是不可以显示乱码 一定要按原内容输出  ...

他这道题是想考你:用字节流(也只有字节流有read(byte【】)是什么都可以读取的,只要你缓冲区大小比文件大就不会乱码,题目的5字节单位会显示乱码。
回复 使用道具 举报
陈新海1 发表于 2014-8-26 15:54
他这道题是想考你:用字节流(也只有字节流有read(byte【】)是什么都可以读取的,只要你缓冲区大小比文 ...
  1. public class Test7 {

  2.         public static void main(String[] args) {

  3.                 FileInputStream fis = null;
  4.                 ByteArrayOutputStream baos = null;
  5.                 try {
  6.                         fis = new FileInputStream("exercise.txt");
  7.                         baos = new ByteArrayOutputStream();
  8.                         byte[] buf = new byte[5];
  9.                         int len = 0;
  10.                         while ((len = fis.read(buf)) != -1) {
  11.                                 baos.write(buf, 0, len);
  12.                         }
  13.                         System.out.println(baos.toString("gbk"));
  14.                 } catch (Exception e) {
  15.                         e.printStackTrace();
  16.                 } finally {
  17.                         if (fis != null)
  18.                                 try {
  19.                                         fis.close();
  20.                                 } catch (IOException e) {
  21.                                         e.printStackTrace();
  22.                                 }
  23.                         if (baos != null)
  24.                                 try {
  25.                                         baos.close();
  26.                                 } catch (IOException e) {
  27.                                         e.printStackTrace();
  28.                                 }
  29.                 }
  30.         }
  31. }
复制代码
这种写法我不知行不 怕不不符合要求
回复 使用道具 举报
790324255a 发表于 2014-8-26 16:01
这种写法我不知行不 怕不不符合要求

其实目的就是控制台啊,都用到内存流拉,可以的挺高级的
回复 使用道具 举报
陈新海1 发表于 2014-8-26 16:25
其实目的就是控制台啊,都用到内存流拉,可以的挺高级的

但愿 这样行吧
回复 使用道具 举报
fantacyleo 发表于 2014-8-20 20:24
打错了,应该是ByteArrayOutputStream。读随便你用什么流,输出流用这个。ByteArrayOutputStream有toStri ...

看到你这个提示我就明白了,谢谢
回复 使用道具 举报 1 0
exercise.txt应该放在哪个文件夹下
回复 使用道具 举报
正在做这个题
回复 使用道具 举报
谢谢你的分享
回复 使用道具 举报
学习了                                    
回复 使用道具 举报

学习了
回复 使用道具 举报
让人头疼的一件事....
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马