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 个回复

正序浏览
让人头疼的一件事....
回复 使用道具 举报

学习了
回复 使用道具 举报
学习了                                    
回复 使用道具 举报
谢谢你的分享
回复 使用道具 举报
正在做这个题
回复 使用道具 举报
exercise.txt应该放在哪个文件夹下
回复 使用道具 举报
fantacyleo 发表于 2014-8-20 20:24
打错了,应该是ByteArrayOutputStream。读随便你用什么流,输出流用这个。ByteArrayOutputStream有toStri ...

看到你这个提示我就明白了,谢谢
回复 使用道具 举报 1 0
陈新海1 发表于 2014-8-26 16:25
其实目的就是控制台啊,都用到内存流拉,可以的挺高级的

但愿 这样行吧
回复 使用道具 举报
790324255a 发表于 2014-8-26 16:01
这种写法我不知行不 怕不不符合要求

其实目的就是控制台啊,都用到内存流拉,可以的挺高级的
回复 使用道具 举报
陈新海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 15:07
楼主关于这道题 你最后的结果是可以显示乱码 还是不可以显示乱码 一定要按原内容输出  ...

他这道题是想考你:用字节流(也只有字节流有read(byte【】)是什么都可以读取的,只要你缓冲区大小比文件大就不会乱码,题目的5字节单位会显示乱码。
回复 使用道具 举报
楼主关于这道题 你最后的结果是可以显示乱码 还是不可以显示乱码 一定要按原内容输出
回复 使用道具 举报
受教了。
回复 使用道具 举报
fantacyleo 发表于 2014-8-20 20:24
打错了,应该是ByteArrayOutputStream。读随便你用什么流,输出流用这个。ByteArrayOutputStream有toStri ...

我再看了毕老师的,看懂了又忘了,这个流真的太少用了,还是没感觉,
回复 使用道具 举报
陈新海1 发表于 2014-8-20 20:11
原来是用这个流读啊,可惜我不会你把我这题做下,有奖励哦

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

评分

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

查看全部评分

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

原来是用这个流读啊,可惜我不会你把我这题做下,有奖励哦
回复 使用道具 举报
这不是你前两天问过的题么?让你每次读5个字节,可没让你每次打印5个字节啊。用ByteArrayInputStream就ok了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马