PrintStream写(int i)方法不起作用?

时间:2015-05-23 14:49:30

标签: java io system.out

我正在学习I / O和流抽象。 我遇到了这个小玩具示例,该示例应打开附加到文本文件的流并将内容(简单的ASCII文本)显示到附加到System.out(控制台)的默认目标。 它没有显示任何东西,我错在哪里?

function wrap(node) {
    var o = {node: node}, i,
        map = [
            {alias: 'on', native: 'addEventListener'},
            {alias: 'off', native: 'removeEventListener'}
        ];
    if (node && node.constructor && node.constructor.prototype)
        for (i = 0; i < map.length; ++i)
            if (map[i].native in node.constructor.prototype)
                o[map[i].alias] = node.constructor.prototype[map[i].native].bind(node);
    return o;
}

// now, e.g.
wrap(window).on('click', console.dir.bind(console));

1 个答案:

答案 0 :(得分:0)

`System.out.write(byteRead); call将字节按原样(不进行任何转换)写入应用程序的标准输出流。输出流的字符编码取决于您配置系统的方式。

  • 如果您正在阅读二进制文件,则很可能它不包含可打印的字符...取决于默认的字符编码。

  • 该文件可能为空。

如果您尝试显示为十进制字节,那么您应该使用print方法;请PrintStream的{​​{3}}。

问题还可能是System.out流没有被刷新,因此没有输出一些数据。在循环退出后尝试调用flush()

System.out和/或System.err流可能配置为每次看到换行时自动刷新。但是,如果您的输入文件不包含换行符,则不会发生这种情况。)

  

(我以为它在程序终止时自动刷新了。)。

依靠“我虽然......”并不是一个好主意。检查javadocs。在这种情况下,System.out的javadoc没有指定这种情况发生,因此您的假设超出了“规范”。