黑马程序员技术交流社区

标题: 大家看看,这怎么回事 [打印本页]

作者: 文盲庄稼汉    时间: 2014-8-27 17:22
标题: 大家看看,这怎么回事
  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后就报错了?


作者: paul.li    时间: 2014-8-27 17:37
看不出来
作者: 何艳梅    时间: 2014-8-27 19:24
兄弟,流都被你关了,好吗。fr.close();应该在while外面。
作者: 文盲庄稼汉    时间: 2014-8-27 19:39
何艳梅 发表于 2014-8-27 19:24
兄弟,流都被你关了,好吗。fr.close();应该在while外面。

嗯嗯 .已经解决了。看了一下午眼晕的不行.。。
作者: 王凯路路    时间: 2014-8-27 21:23
哥们, 读完一个字节你就把流关了, 后面还能读出来么 ?
作者: 赵权    时间: 2014-8-27 21:35
看不懂,太高深




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2