Muszę odczytać dane z pliku. Te dane zostały zapisane do pliku w bajtach serwera. Plik ma poprawioną strukturę, teraz chcę przeczytać zawarte w nim informacje z JS.Czytaj bajt pliku na bajt i parsuj do int
znalazłem http://www.html5rocks.com/en/tutorials/file/dndfiles/ i kopiowane ją pobawić: http://jsfiddle.net/egLof4ph/
function readBlob(opt_startByte, opt_stopByte) {
var files = document.getElementById('files').files;
if (!files.length) {
alert('Please select a file!');
return;
}
var file = files[0];
var start = parseInt(opt_startByte) || 0;
var stop = parseInt(opt_stopByte) || file.size - 1;
var reader = new FileReader();
// If we use onloadend, we need to check the readyState.
reader.onloadend = function(evt) {
if (evt.target.readyState == FileReader.DONE) { // DONE == 2
document.getElementById('byte_content').textContent = evt.target.result;
document.getElementById('byte_range').textContent = ['Read bytes: ', start + 1, ' - ', stop + 1,
' of ', file.size, ' byte file'].join('');
}
};
var blob = file.slice(start, stop);
var a = reader.readAsBinaryString(blob);
}
document.querySelector('.readBytesButtons').addEventListener('click', function(evt) {
if (evt.target.tagName.toLowerCase() == 'button') {
var startByte = evt.target.getAttribute('data-startbyte');
var endByte = evt.target.getAttribute('data-endbyte');
readBlob(startByte, endByte);
}
}, false);
Wiedziałem, że pierwsze 7 bajtów są tragiczne i można je wyrzucić. Kolejne 68 bajtów należy do siebie i każda wartość ma rozmiar 4 bajty. Po 68 bajtach ponownie przychodzi 68 użytecznych bajtów (68 bajtów to "szczeliny czasowe").
Moje pytanie: Kiedy używam że kod otrzymuję wiele znaków (A, Q, & & &, znaki specjalne, ..), ale dane są w rzeczywistości tęskni. Jak mogę je przeanalizować w Numbers? Zgodnie z API Filereader readAsBinarsString() zwraca surowe dane binarne. I jak poprawnie przeanalizować cały plik?
Tak, oryginalny plik wygląda tak:
<7B>Metadata</7B><4B>long value</4B>....17times for each timeslot <4B>long value</4B>....17times again.... and this util the end of the file.
Kiedy Używam powyższy kod otrzymuję wyjścia jak: & & WK
Ponadto znalazłem: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays (ponieważ FileReader dostarcza metodę, która zwraca ArrayBuffer), więc domyślam się, że powinienem użyć readAsArrayBuffer(), ale jak użyć go, by dostać się do moich danych?
Czy masz przykład pliku, który chcesz przeanalizować? –
Niestety nie, mam tylko plik, w którym mogę zobaczyć, jak wyglądają oryginalne dane. Aktualizuję to w moim przewodniku pocztowym. – EsoMoa
Czy naprawdę tego potrzebujesz? Dlaczego nie przeczytać/przetworzyć pliku na serwerze i zwrócić Int, którego potrzebujesz? – Fals