次の方法でバイナリ ファイルを作成しました (可能なすべてのバイト値がバイナリ ファイルに含まれるようにするため)。
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に取得するにはどうすればよいですか?