浏览 2256 次
锁定老帖子 主题:你猜猜这段代码的结果
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-08-22
public static void main(String[] args) { InputStream stream = System.in; try { FileOutputStream outStream = new FileOutputStream("E:/a.txt"); byte [] data = new byte[2]; int pos = 0; while (pos != -1) { pos = stream.read(data); outStream.write(data); int size = stream.available(); System.out.println("currut pos------------"+pos); System.out.println("available size------------"+size); } outStream.flush(); outStream.close(); } catch (IOException e) { e.printStackTrace(); } try { System.out.println("========closed=============="); stream.close(); } catch (IOException e) { e.printStackTrace(); } } 问题一:输入12345会输出什么结果? 问题二:E:/a.txt中会有输入的12345保存吗? 问题三:"========closed=============="这句话会打印出来吗? 每回答一个问题说明理由,回答问题的前提是不要运行此程序,回答完再运行~ 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-08-22
难道太简单了吗?各位看客!
|
|
返回顶楼 | |
发表时间:2009-08-25
答案应该全是否定的,具体原因应该出在 pos = stream.read(data);,具体就不知道了
|
|
返回顶楼 | |
发表时间:2009-09-03
zhy20045923 写道 答案应该全是否定的,具体原因应该出在 pos = stream.read(data);,具体就不知道了
你的理解不够准确,既然该贴被评为新手帖,就让我了解这件事情吧! 先贴出执行结果: 12345 ---------currut pos--------2 ---------avalible size--------5 ---------currut pos--------2 ---------avalible size--------3 ---------currut pos--------2 ---------avalible size--------1 ---------currut pos--------1 ---------avalible size--------0 首先我们输入的12345加一个回车,那么对instream执行的aviliable(),实际上是7位,但是第一次打印出的为什么是5呢?这个新问题的答案也是解释为什么这段程序没有结束的答案。 最重要的原因是:InputStream stream = System.in; 当程序第一次进入while循环时因为System.in这个线程在wite,所以我们的执行线程也进入到wade状态,直到我们有输入,这时根据代码,直接执行read,读取2个byte,所以接下来的可读byte为5,当然说到这里,这个程序不退出也就一目了然了。 |
|
返回顶楼 | |