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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 文盲庄稼汉 中级黑马   /  2014-8-27 17:22  /  1038 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package IOday02;

  2. import java.io.FileInputStream;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;



  5. public class FileStream {

  6.         /**
  7.          * @param args
  8.          */
  9.         public static void main(String[] args) throws IOException {

  10.                 // writeFile();
  11.                  method_1();
  12.                 // method_2();
  13.                 //method_3();

  14.         }

  15.         public static void method_3() throws IOException {
  16.                 FileInputStream fs = new FileInputStream("filestream.txt");
  17.                 int num = fs.available();
  18.                 // System.out.println(num);
  19.                 byte[] a = new byte[num];
  20.                 int s = 0;
  21.                 while ((s = fs.read(a)) != -1) {

  22.                         System.out.println(new String(a, 0, s));
  23.                 }

  24.         }

  25.         public static void method_2() throws IOException {
  26.                 FileInputStream fs = new FileInputStream("filestream.txt");

  27.                 byte[] b = new byte[1024];
  28.                 int s = 0;
  29.                 while ((s = fs.read(b)) != -1) {

  30.                         System.out.println(new String(b, 0, s));

  31.                 }

  32.         }

  33.         private static void writeFile() throws IOException {
  34.                 FileOutputStream fs = new FileOutputStream("filestream.txt");

  35.                 fs.write("abcdefg".getBytes());

  36.                 fs.close();
  37.         }

  38.         public static void method_1() throws IOException {
  39.                 FileInputStream fr = new FileInputStream("filestream.txt");

  40.                 int num = 0;
  41.                 while ((num = fr.read()) != -1) {
  42.                         System.out.println("num=" + (char) num);
  43.                         fr.close();

  44.                 }

  45.         }

  46. }
复制代码
method_1就是读到一个取出一个为什么取出a后就报错了?

5 个回复

倒序浏览
看不出来
回复 使用道具 举报
兄弟,流都被你关了,好吗。fr.close();应该在while外面。
回复 使用道具 举报
何艳梅 发表于 2014-8-27 19:24
兄弟,流都被你关了,好吗。fr.close();应该在while外面。

嗯嗯 .已经解决了。看了一下午眼晕的不行.。。
回复 使用道具 举报
哥们, 读完一个字节你就把流关了, 后面还能读出来么 ?
回复 使用道具 举报
看不懂,太高深
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马