黑马程序员技术交流社区

标题: 麻烦各位看一下为什么我的io流写不进去呢? [打印本页]

作者: 徐君    时间: 2013-11-20 14:21
标题: 麻烦各位看一下为什么我的io流写不进去呢?
本帖最后由 徐君 于 2013-11-20 21:41 编辑

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;


public class test1 {
        public static void main(String[] args) throws IOException {
                File f = new File("E:\\java\\hello.txt");
                StringBuilder sb  = new StringBuilder();
                FileWriter fw = new FileWriter(f);
                InputStream in = System.in;
                String temp = null;
                while(in.read()!=-1){
                        sb.append((char)in.read());
                        temp = sb.toString();
                        fw.write(temp);
                        System.out.println(temp);
                        }
                fw.close();
                }
               
}



作者: @ne_pie尒ce    时间: 2013-11-20 16:11
你这里没有写出去是因为数据在缓冲区中,而你的while循环,没有结束标记
程序一直在等待键盘录入,所以不会去执行fw.close();字符流在关闭流之前也会将缓冲区的数据
刷到指定文件中,但是,你的程序执行不到,
while(in.read()!=-1){
                        sb.append((char)in.read());//建议不要这样定义缓冲区,来存放录入的数据,直接字节数组就好了,而且应该定义在循环外面,不然要写出的内容会重复
                        temp = sb.toString();
                        fw.write(temp);
                        System.out.println(temp);
                        fw.flush();//加上这句就可以了
                        }
                fw.close();

作者: 黄炳期    时间: 2013-11-20 17:34
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
作者: hurryup    时间: 2013-11-20 17:42
  1. import java.io.File;
  2. import java.io.FileWriter;
  3. import java.io.IOException;
  4. import java.io.InputStream;


  5. public class Test1 {
  6.         public static void main(String[] args) throws IOException {
  7.                 File f = new File("F:\\新建文本文档.txt");
  8.                 StringBuilder sb  = new StringBuilder();
  9.                 FileWriter fw = new FileWriter(f);
  10.                 InputStream in = System.in;
  11.                 String temp = null;
  12.                 int x=0;
  13.                 while(true){
  14.                        x=in.read();
  15.                         temp = sb.toString();
  16.                         if(x=='\r')
  17.                         continue;
  18.                         if (x=='\n')
  19.                         {
  20.                         fw.write(temp);
  21.                         if("over".equals(temp))
  22.                        
  23.                                 break;
  24.                         sb.delete(0,sb.length());
  25.                         System.out.println(temp);
  26.                         }else{
  27.                         
  28.                         sb.append((char)x);
  29.                         }
  30.                         }
  31.                 fw.flush();
  32.                 fw.close();
  33.                 }
  34.                
  35. }
复制代码
我帮你把循环条件改了下,可以通过了,代码如下:




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