Как я могу прочитать любой большой файл (больше 1 гигабайта) локально по чанкам (2 КБ или более), а затем преобразовать чанк в строку, обработать строку и затем получить следующий чанк и так далее до конца файл?
Я могу читать только небольшие файлы и преобразовывать их в строку, как вы можете видеть из кода, который я не знаю, как читать файл по частям. Браузер зависает, если я попробую его с файлом больше 10 Мб.
<html>
<head>
<title>Read File</title>
</head>
<body>
<input type="file" id="myFile">
<hr>
<textarea style="width:500px;height: 400px" id="output"></textarea>
<script>
var input = document.getElementById("myFile");
var output = document.getElementById("output");
input.addEventListener("change", function () {
if (this.files && this.files[0]) {
var myFile = this.files[0];
var reader = new FileReader();
reader.addEventListener('load', function (e) {
output.textContent = e.target.result;
});
reader.readAsBinaryString(myFile);
}
});
</script>
</body>
</html>
Ниже приведены ссылки и ответы, которые я нашел в StackOverflow во время исследования того, как этого добиться, но это не решило мой вопрос.
1: Этот вопрос задавался вопросом о том, как это сделать с помощью UniversalXPConnect, и только в Firefox, поэтому я нашел ответ там неуместным, потому что я использую Chrome и не знаю, что UniversalXPConnect есть.
Как читать локальный файл кусками в JavaScript
2: Этот вопрос задавался о том, как читать только текстовые файлы, но я хочу иметь возможность читать любой файл не только по тексту, а также по частям, что делает ответы там неуместными, но Мне понравилось, насколько коротким был код ответа. Чтение локального текстового файла в массив JavaScript [дубликат]
3: Это также относится к текстовым файлам и не показывает, как читать файлы по частям Как читать локальный текстовый файл.
Я немного знаю Java, с помощью которого вы можете легко это сделать;
char[] myBuffer = new char[512];
int bytesRead = 0;
BufferedReader in = new BufferedReader(new FileReader("foo.mp4"));
while ((bytesRead = in.read(myBuffer,0,512)) != -1){
...
}
но я новичок в javascript