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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 徐君 于 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();
                }
               
}


评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

3 个回复

倒序浏览
你这里没有写出去是因为数据在缓冲区中,而你的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();

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报
  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. }
复制代码
我帮你把循环条件改了下,可以通过了,代码如下:
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马