Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/54: Рейтинг темы: голосов - 54, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 17.02.2014
Сообщений: 5
1

Чтение текстового файла

17.02.2014, 15:04. Показов 10165. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Необходимо прочитать локальный текстовый файл и передать его значение глобальной переменной.
Присваивание содержимого файла переменной str в обработчике собыйтий reader.onload проходит нормально, но дальнейшее её использовании вне функции (например в функции rdfile) происходит так, будто присвоения содержимого файла не было. Подскажите как исправить!!!
Код:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE html>
<html>
<head>
<script>
    var tfile;
    var reader = new FileReader();
    function rdfile(files)
    {   
        tfile = files[0];
        reader.readAsText(tfile);
    alert(str); 
    };
    reader.onload = function(e)
    {
        str=e.target.result;
    };
        
</script>
</head>
<body>
<div><input type="file" id="myfile" onchange="rdfile(this.files)"></div>
</body>
</html>
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.02.2014, 15:04
Ответы с готовыми решениями:

Чтение в массив из текстового файла на сервере
как с помощью java script считать с текстового файла (на сервере) данные в массив

Считывание текстового файла в переменную
Есть плагин под Firefox c папкой data в которой лежит тектовый файл, который надо считать в масив....

Данные из текстового файла в html-форму
Здравствуйте. Суть проблемы: есть текстовый файл с контактными данными вида: город - Питер...

Как удалить данные из текстового файла?
Есть файл, последнюю строку которго нужно время от времени удалять. Возможно ли это? Как? ...

6
268 / 268 / 109
Регистрация: 22.08.2013
Сообщений: 907
17.02.2014, 15:53 2
Zlodei1492, присвоение было, но дело в том, что оно выполнилось асинхронно (в обработчике), и было уже после вывода. Для того чтобы исправить Вашу проблему, необходимо поместить вывод переменной в асинхронный обработчик события onload (то есть как только файл подгружается — скрипт сразу же выводит его).
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
            var tfile;
            var reader = new FileReader();
            
            function rdfile(files)
            {
                tfile = files[0];
                reader.readAsText(tfile);
                reader.onload = function(e)
                {
                    str = e.target.result;
                    alert(str);
                };
            }
0
268 / 268 / 109
Регистрация: 22.08.2013
Сообщений: 907
17.02.2014, 15:57 3
Скриншот, демонстрирующий то что я говорил (сначала переменная не определена, потом я сам попытался вывести её, и как видите, содержимое файла было записано).
Миниатюры
Чтение текстового файла  
0
0 / 0 / 0
Регистрация: 17.02.2014
Сообщений: 5
17.02.2014, 16:05  [ТС] 4
Да, спасибо!
Но если мне необходимо будет работать с этой переменной, в которой находится содержимое файла, в других процедурах и функциях, то может получится такая же ситуация (процедура выполниться раньше чем прочитается файл) и переменная на данном этапе снова окажется пустой. Как решается проблема синхронизации???
0
268 / 268 / 109
Регистрация: 22.08.2013
Сообщений: 907
17.02.2014, 17:14 5
Zlodei1492, я же сказал — работайте с содержимым только после того как файл загрузится (событие onload). По другому никак. И вообще, используйте в каждой функции свой загрузчик.
1
0 / 0 / 0
Регистрация: 17.02.2014
Сообщений: 5
17.02.2014, 22:19  [ТС] 6
Благодарю! )

Добавлено через 4 часа 12 минут
Razip, если в текстовом файле находятся русские буквы, то при его чтении и дальнейшем выводе на экран русские буквы отображаются черными ромбами. Где настроить и как кодировку и возможно ли вообще это?
0
268 / 268 / 109
Регистрация: 22.08.2013
Сообщений: 907
18.02.2014, 10:52 7
Zlodei1492, кодировку можно установить вторым аргументом у метода readAsText(). Таким образом:
Javascript
1
reader.readAsText(tfile, 'CP1251');
1
18.02.2014, 10:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.02.2014, 10:52
Помогаю со студенческими работами здесь

Удаление текстового файла при закрытии страницы
Собственно сабж

Выделить из текстового файла n-ую строку. Написать на JavaScript
Выделить из текстового файла n-ую строку. Написать на JavaScript.

Удаление текстового файла, открытого на странице html
на странице html текстовое поле, в которое осуществляется вывод текста из текстового файла. Делаю...

Чтение файла из JS
Доброго времени суток, ребята! Хотел спросить совета. Я считываю следующей функцией файл на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru