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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 殷士剑 中级黑马   /  2012-11-23 00:01  /  1439 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 殷士剑 于 2012-11-23 12:40 编辑
  1. import java.io.BufferedReader;
  2. import java.io.FileWriter;
  3. import java.io.InputStreamReader;
  4. public class Test6 {
  5. /**
  6. * 从键盘输入一些字,然后被保存到一个指定的目录下,比如一个 demo.txt中
  7. */
  8. public static void main(String[] args) throws Exception {
  9. // TODO Auto-generated method stub
  10. BufferedReader bufferedReader = new BufferedReader(
  11. new InputStreamReader(System.in));
  12. FileWriter out = new FileWriter("e:\\test\\log.txt");
  13. char[] buffer = new char[1024];
  14. int len = 0;
  15. while ((len = bufferedReader.read(buffer)) != -1) {
  16. out.write(buffer, 0, len);
  17. }
  18. bufferedReader.close();
  19. out.close();

  20. }

  21. }
复制代码
从控制台上输入后,在log.txt中没内容,我的代码错了吗?

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
有数据,你的代码没有设置结束标记,所以当你输入完数据之后,再按个ctrl+c结束一下,你再看一下你的文件

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
你没有定义键盘录入的结束标记,而键盘录入是阻塞式方法,所以当你停止录入后,程序并没有停止,read()方法等待,out.close()没有执行,就不会有刷新。也就不会有数据。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
因为,你用到了System.in这个键盘录入,是需要在读写while 循环里面定义一个结束标记,来确定录入完毕

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
谢谢各位黑马!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马