bal*_*ton 21 binary ascii node.js
我想知道用Node.js检查文件是二进制还是ASCII的最佳方法是什么?
似乎有两种不特定于node.js的方法:
检查MIME类型:如何在PHP中检查文件是ASCII还是二进制 - 但是这有问题,例如前驱动器通常没有识别的mime类型,并application/octet-stream在使用mime检查时恢复
通过使用流缓冲区检查字节大小,如何将文件内容标识为ASCII或二进制 - 这似乎非常密集,并且还提供了node.js示例.
那么还有另一种方式吗?也许是一个我不知道的秘密node.js呼叫或模块?或者如果我必须自己这样做,会建议采用什么方式?
谢谢
bal*_*ton 12
感谢David Schwartz对这个问题的评论,我创建了istextorbinary来解决这个问题.
ASCII 定义了字符 0-127,因此如果文件的全部内容是该范围内的字节值,则可以将其视为 ASCII 文件。
function fileIsAscii(filename, callback) {
// Read the file with no encoding for raw buffer access.
require('fs').readFile(filename, function(err, buf) {
if (err) throw err;
var isAscii = true;
for (var i=0, len=buf.length; i<len; i++) {
if (buf[i] > 127) { isAscii=false; break; }
}
callback(isAscii); // true iff all octets are in [0, 127].
});
}
fileIsAscii('/usr/share/dict/words', function(x){/* x === true */});
fileIsAscii('/bin/ls', function(x){/* x === false */});
Run Code Online (Sandbox Code Playgroud)
如果性能至关重要,则考虑根据链接的答案编写自定义 C++ 函数。
| 归档时间: |
|
| 查看次数: |
8745 次 |
| 最近记录: |