Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Чтение бинарного файла (https://javascript.ru/forum/misc/44654-chtenie-binarnogo-fajjla.html)

vladimir130892 28.01.2014 10:46

Чтение бинарного файла
 
Здравствуйте)

Возникла проблема следующая:

Выбираю бинарный файл:
<input type='file' id="Bfile">



И кликом вызываю:
var ARRAY;
ARRAY = openFile();



Функция openFile():
function openFile() {
var input = document.getElementById("Bfile");
var arr = [ ];
var reader = new FileReader();
reader.onload = function (event){
var reader = event.target;
var arrayBuffer = reader.result;
arr = new Int32Array(arrayBuffer);
return arr;
};
return reader.readAsArrayBuffer(input.files[0]);
};



Хочу добиться того, чтобы функция вернула массив arr, т.е. фактически чтобы ARRAY = arr. Пока ничего не выходит... Помогите пожалуйста...

Яростный Меч 28.01.2014 12:08

function openFile(callback) {
    var input = document.getElementById("Bfile");
    var reader = new FileReader();
    reader.onload = function (event){
        var reader = event.target;
        var arrayBuffer = reader.result;
        callback(new Int32Array(arrayBuffer));
    };
    reader.readAsArrayBuffer(input.files[0]);
};

openFile(function(ARRAY) {
    // здесь работаем с полученным массивом
});

vladimir130892 28.01.2014 13:29

большое спасибо)

Serafim12 03.02.2014 20:53

Здравствуйте, а не подскажите как быть, если у меня в файле массив сохранены обычные числа?

Сохранять как текст ( readAsText ), а потом переделывать?

Яростный Меч 03.02.2014 22:22

Читай как текст, делай split по переносу строки, для каждого элемента split по пробелу.

Serafim12 04.02.2014 00:00

Цитата:

Сообщение от Яростный Меч (Сообщение 295688)
Читай как текст, делай split по переносу строки, для каждого элемента split по пробелу.

Вот сделал)
var b= new Array();
           b = arr.split("\n");
for (var i = 0; i < b.length; i++) 
{
    b[i] = b[i].split(" "); 
}



Спасибо.

рони 04.02.2014 01:25

Serafim12,
Цитата:

Сообщение от Serafim12
b= new Array();

это лишнее :write:


Часовой пояс GMT +3, время: 02:19.