各バイトがレコードであるバイナリデータファイルがあり、x
そのデータを解読するためのフォーマット/マスク (ただし、表示したい場合) があります。それshort short int short float double
は、、、何とか何とかのようなものです。だから私はFile APIでこのファイルを読んでいます。最終的にはArrayBufferを使用する必要がありますが、まだそこにいません...私の質問は2つあります。まず、最も直接的に、バイナリ ファイルから ArrayBufferにすべてのバイトを読み込む最良の方法は何ですか?x
第二に、私はいくつかの問題に遭遇しています.500kbのバイナリファイルを読み取ると、以下のスクリプトが5GB以上のRAMをすぐにいっぱいにするのはなぜですか?
$('input[type="file"]').change(function(event) {
// FileList object
var files = event.target.files;
for (var i = 0, f; f = files[i]; i++) {
var reader = new FileReader();
// closures and magnets, how do they work
reader.onload = (function(f) {
return function(event) {
// data file starts with header XML
// indexOf +9 for </HEADER> and +1 for null byte
var data_start = event.target.result.indexOf('</HEADER>')+10,
// leverage jQuery for XML
header = $(event.target.result.slice(0,data_start)),
rec_len = parseInt(header.find('REC_LEN').text(),10);
// var ArrayBuffer
// define ArrayBufferView
// loop through records
for (var i = data_start; i<event.target.result.length; i+=rec_len) {
// fill ArrayBuffer
// add data to global data []
console.log(i+' : '+event.target.result.slice(i, i+rec_len));
}
};
})(f);
// Read as Binary
reader.readAsBinaryString(f);
}
});