关于二进制文件:如何在 dart 中检测文件是否为二进制(非文本)?

How can I detect if a file is binary (non-text) in dart?

在 dart 控制台应用程序中,如何判断文件是否为二进制文件(非文本)?


读取文件内容并检查是否发现不可显示的字符。一个例子是 \\u0000 或连续的 \\u0000,它经常出现在二进制文件中而不是文本文件中。

另请参阅如何在 c# 中确定文件是二进制文件还是文本文件?,https://stackoverflow.com/a/277568/217408


我使用这段代码来定义一个二进制或文本文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
bool isBinary(String path) {
  final file = File(path);
  RandomAccessFile raf = file.openSync(mode: FileMode.read);
  Uint8List data = raf.readSync(124);
  for (final b in data) {
    if (b >= 0x00 && b <= 0x08) {
      raf.close();
      return true;
    }
  }
  raf.close();
  return false;
}

try {
  isBinary('/filepath.ext');
} on FileSystemException {}