我正在学习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));
答案 0 :(得分:0)
`System.out.write(byteRead); call将字节按原样(不进行任何转换)写入应用程序的标准输出流。输出流的字符编码取决于您配置系统的方式。
如果您正在阅读二进制文件,则很可能它不包含可打印的字符...取决于默认的字符编码。
该文件可能为空。
如果您尝试显示为十进制字节,那么您应该使用print
方法;请PrintStream
的{{3}}。
问题还可能是System.out
流没有被刷新,因此没有输出一些数据。在循环退出后尝试调用flush()
。
(System.out
和/或System.err
流可能配置为每次看到换行时自动刷新。但是,如果您的输入文件不包含换行符,则不会发生这种情况。)
(我以为它在程序终止时自动刷新了。)。
依靠“我虽然......”并不是一个好主意。检查javadocs。在这种情况下,System.out
的javadoc没有指定这种情况发生,因此您的假设超出了“规范”。