我以以下方式创建了一个二进制文件(以确保所有可能的字节值都在二进制文件中):
using (var fs = File.Create(fileName))
{
for (byte b = 0; b < Byte.MaxValue; b++)
{
fs.WriteByte(b);
}
}
我以这种方式阅读它(用于测试它是否有效):
using (var fs = File.Open(fileName, FileMode.Open))
{
long oldPos = -1;
long pos = 0;
while (oldPos != pos)
{
oldPos = pos;
Console.WriteLine(Convert.ToString(fs.ReadByte(), 2).PadLeft(8, '0'));
pos = fs.Position;
}
}
在 IE 中的 javascript 中,复制文件(读取它,然后将其写回)在使用时工作得很好FileSystemObject
:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var from = fso.OpenTextFile(fileToRead, 1, 0); // read, ASCII (-1 for unicode)
var to = fso.CreateTextFile(fileToWriteTo, true, false);
while (!from.AtEndOfStream) {
to.Write(from.Read(1));
}
from.Close();
to.Close();
当我读取输出的二进制文件时,我得到 00000000,00000001,00000010... 等等。
但尝试将其读入 javascript 似乎会导致无法读取:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var from = fso.OpenTextFile(fileToRead, 1, 0);
var test = [];
while (!from.AtEndOfStream) {
test.push(0xff & from.Read(1)); // make it a byte.
}
from.Close();
这导致 test 在它的数组中有一堆 0,以及一些其他非零项,但大多数只是 0。
有人可以解释为什么它适用于一个而不是另一个吗?我需要做什么才能将值输入 javascript?
顺便说一句,这里是从客户端机器上读取文件的相关阅读: