Detects if a file is binary in Node.js. Similar to Perl's -B
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src some ocd cleanup Jan 8, 2019
test tweak API a bit Jan 7, 2019
.gitignore rewrite it into typescript Jan 7, 2019
.prettierrc rewrite it into typescript Jan 7, 2019
.travis.yml speed up travis Jan 7, 2019
LICENSE.txt
README.md Update example Jan 8, 2019
jestconfig.json rewrite it into typescript Jan 7, 2019
package-lock.json try this automation? Jan 8, 2019
package.json Release 4.0.0 Jan 8, 2019
tsconfig.json rewrite it into typescript Jan 7, 2019
tslint.json

README.md

isBinaryFile

Detects if a file is binary in Node.js using promises. Similar to Perl's -B switch, in that:

  • it reads the first few thousand bytes of a file
  • checks for a null byte; if it's found, it's binary
  • flags non-ASCII characters. After a certain number of "weird" characters, the file is flagged as binary

Much of the logic is pretty much ported from ag.

Note: if the file doesn't exist or is a directory, an error is thrown.

Installation

npm install isbinaryfile

Usage

Returns Promise<boolean> (or just boolean for *Sync). true if the file is binary, false otherwise.

isBinaryFile(filepath)

  • filepath - a string indicating the path to the file.

isBinaryFile(bytes[, size])

  • bytes - a Buffer of the file's contents.
  • size - an optional number indicating the file size.

isBinaryFileSync(filepath)

  • filepath - a string indicating the path to the file.

isBinaryFileSync(bytes[, size])

  • bytes - a Buffer of the file's contents.
  • size - an optional number indicating the file size.

Examples

Here's an arbitrary usage:

const isBinaryFile = require("isbinaryfile").isBinaryFile;
const fs = require("fs");

const filename = "fixtures/pdf.pdf";
const data = fs.readFileSync(filename);
const stat = fs.lstatSync(filename);

isBinaryFile(data, stat.size).then((result) => {
  if (result) {
    console.log("It is binary!")
  }
  else {
    console.log("No it is not.")
  }
});

const isBinaryFileSync = require("isbinaryfile").isBinaryFileSync;
const bytes = fs.readFileSync(filename);
const size = fs.lstatSync(filename).size;
console.log(isBinaryFileSync(bytes, size)); // true or false

Testing

Run npm install, then run npm test.