Ich brauche Hilfe, um herauszufinden, wie auf die Datei in JavaScript zugegriffen wird, um einige Operationen auszuführen.Wie durchlaufe ich eine Datei Byte für Byte in JavaScript?
Ich möchte eine Datei Byte für Byte mithilfe von JavaScript durchlaufen. Ich kann bereits auswählen, welche Datei ich gerne lesen würde. Und ich kann Preset-Byte der Datei lesen.
Ich habe dieses schöne Beispiel dafür, wie finden Sie hier ein Stück einer Datei zu lesen:
Hier ist der Code-Schnipsel, die ich mit bin zu spielen:
<style>
#byte_content {
margin: 5px 0;
max-height: 100px;
overflow-y: auto;
overflow-x: hidden;
}
#byte_range { margin-top: 5px; }
</style>
<input type="file" id="files" name="file" /> Read bytes:
<span class="readBytesButtons">
<button data-startbyte="0" data-endbyte="4">1-5</button>
<button data-startbyte="5" data-endbyte="14">6-15</button>
<button data-startbyte="6" data-endbyte="7">7-8</button>
<button>entire file</button>
</span>
<div id="byte_range"></div>
<div id="byte_content"></div>
<script>
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 + 1);
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);
</script>
Jetzt möchte ich die Datei, vier Bytes auf einmal durchlaufen, aber kann nicht scheinen, wie man das macht. Der Leser scheint mir nicht mehr als einmal zu lesen.
im Vorauswhile(placemark != fileSize-4){
output = file.slice(placemark, placemark + 4);
console.log(output);
placemark = placemark + 5;
}
Danke:
Sobald ich aus der Datei mehr als einmal lesen kann, soll ich durch sie ganz leicht mit so etwas wiederholen sein können! Hier ist ein Link zu einer jsFiddle und plnkr Version
Wenn Sie können, würde ich versuchen, Ihren DOM-Manipulationscode aus Ihrem Code zum Lesen von Dateien umzubauen. Auf diese Weise wird es leichter, wenn Sie eine klare Trennung von Bedenken haben, zu debuggen und Änderungen vorzunehmen. –
Ich stimme zu! Ich fühle, dass wenn das einmal erledigt ist, der Rest einfach sein sollte ... Aber ich weiß nicht wie? – FredFury
legte es in ein PLNKR dann werde ich einen Blick auf Refactoring, dann lösen es –