小编San*_*anu的帖子

"BufferedReader.ready"与"while(BufferedReader.readLine()!= null)"

对于java来说,我是新手.我想从java中启动的进程中读取stdout.我在谷歌搜索时得到以下代码:

    Runtime rt = Runtime.getRuntime();
    Process proc = rt.exec(args);
    BufferedReader br = new BufferedReader(
        new InputStreamReader(proc.getInputStream()));
    while(br.ready()){
            System.out.println(br.readLine());
    }
Run Code Online (Sandbox Code Playgroud)

但是,此代码不会打印进程(例如,ls)应该生成的输出(顺便说一下,我在Linux上,openJDK 1.6)

但是,如果我将while循环更改为:

    String line;
    while((line = br.readLine())!=null){
            System.out.println(line);
    }
Run Code Online (Sandbox Code Playgroud)

它按预期工作.

以前的代码有什么问题?根据java api doc所说的,我认为它们是相似的.

java bufferedreader

1
推荐指数
1
解决办法
9116
查看次数

标签 统计

bufferedreader ×1

java ×1