- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在编写非常简单的应用程序来转换数据 - 读取一个文件并写入另一个文件。文件相对较大 - 2 GB。然而,我发现刷新到文件系统并没有发生,在软木塞-开塞循环中,它只发生在 end() 上,所以 end() 基本上挂起系统,直到它完全刷新。我简化了示例,因此它只是多次向流中写入一行。
var PREFIX = 'E:\\TEST\\';
var line = 'AA 11 999999999 20160101 123456 20160101 AAA 00 00 00 0 0 0 2 2 0 0 20160101 0 00';
var fileSystem = require('fs');
function writeStrings() {
var stringsCount = 0;
var stream = fileSystem.createWriteStream(PREFIX +'output.txt');
stream.once('drain', function () {
console.log("drained");
});
stream.once('open', function (fileDescriptor) {
var started = false;
console.log('writing file ');
stream.cork();
for (i = 0; i < 2000000; i++) {
stream.write(line + i);
if (i % 10000 == 0) {
// console.log('passed ',i);
}
if (i % 100000 == 0) {
console.log('uncorcked ',i,stream._writableState.writing);
stream.uncork();
stream.cork();
}
}
stream.end();
});
stream.once('finish', function () {
console.log("done");
});
}
writeStrings();
进入 Node _stream_writable.js,我发现它仅在这种情况下刷新缓冲区:
if (!state.writing &&
!state.corked &&
!state.finished &&
!state.bufferProcessing &&
state.buffer.length)
clearBuffer(this, state);
并且,正如您从示例中看到的,在第一次 uncork() 之后写入标志不会设置回来,这会阻止 uncork 刷新。另外,我根本没有看到耗尽事件的发生。使用 highWaterMark 没有帮助(实际上似乎对任何事情都没有影响)。手动将写入设置为 false(+一些其他标志)确实有帮助,但这肯定是错误的。我是否误解了这个概念?
最佳答案
从node.js文档中我发现uncork()的数量应该与cork()调用的数量相匹配,我没有看到stream.cork()的匹配的stream.uncork()调用,它在for循环之前调用。这可能就是问题所在。
关于node.js - Node JS : Uncork() method on writable stream doesn't really flush the data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34902602/
本文整理了Java中org.apache.crunch.types.writable.Writables.writables()方法的一些代码示例,展示了Writables.writables()的具
本文整理了Java中org.datavec.api.writable.Writable.toInt()方法的一些代码示例,展示了Writable.toInt()的具体用法。这些代码示例主要来源于Git
本文整理了Java中org.datavec.api.writable.Writable.toDouble()方法的一些代码示例,展示了Writable.toDouble()的具体用法。这些代码示例主要
本文整理了Java中org.datavec.api.writable.Writable.toFloat()方法的一些代码示例,展示了Writable.toFloat()的具体用法。这些代码示例主要来源
本文整理了Java中org.datavec.api.writable.Writable.toLong()方法的一些代码示例,展示了Writable.toLong()的具体用法。这些代码示例主要来源于G
本文整理了Java中org.apache.crunch.types.writable.Writables.bytes()方法的一些代码示例,展示了Writables.bytes()的具体用法。这些代码
本文整理了Java中org.apache.crunch.types.writable.Writables.derived()方法的一些代码示例,展示了Writables.derived()的具体用法。
本文整理了Java中org.apache.crunch.types.writable.Writables.booleans()方法的一些代码示例,展示了Writables.booleans()的具体用
本文整理了Java中org.apache.crunch.types.writable.Writables.longs()方法的一些代码示例,展示了Writables.longs()的具体用法。这些代码
本文整理了Java中org.apache.crunch.types.writable.Writables.triples()方法的一些代码示例,展示了Writables.triples()的具体用法。
本文整理了Java中org.apache.crunch.types.writable.Writables.nulls()方法的一些代码示例,展示了Writables.nulls()的具体用法。这些代码
本文整理了Java中org.apache.crunch.types.writable.Writables.records()方法的一些代码示例,展示了Writables.records()的具体用法。
本文整理了Java中org.apache.crunch.types.writable.Writables.collections()方法的一些代码示例,展示了Writables.collections
本文整理了Java中org.apache.crunch.types.writable.Writables.quads()方法的一些代码示例,展示了Writables.quads()的具体用法。这些代码
本文整理了Java中org.apache.crunch.types.writable.Writables.doubles()方法的一些代码示例,展示了Writables.doubles()的具体用法。
本文整理了Java中org.apache.crunch.types.writable.Writables.tableOf()方法的一些代码示例,展示了Writables.tableOf()的具体用法。
本文整理了Java中org.apache.crunch.types.writable.Writables.strings()方法的一些代码示例,展示了Writables.strings()的具体用法。
本文整理了Java中org.apache.crunch.types.writable.Writables.pairs()方法的一些代码示例,展示了Writables.pairs()的具体用法。这些代码
本文整理了Java中org.apache.crunch.types.writable.Writables.tuples()方法的一些代码示例,展示了Writables.tuples()的具体用法。这些
本文整理了Java中org.apache.crunch.types.writable.Writables.floats()方法的一些代码示例,展示了Writables.floats()的具体用法。这些
我是一名优秀的程序员,十分优秀!