Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Считывание из txt файла (https://javascript.ru/forum/offtopic/16038-schityvanie-iz-txt-fajjla.html)

Esca 23.03.2011 19:52

Считывание из txt файла
 
привет, можете подсказать как правильно считать значение из txt файла и записать это значение в переменную?
вот нашла код, только не пойму как записать

var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.OpenTextFile("stat.txt")i
while (!f.AtEndOfStream)
document. write (f. ReadLine () +" <BR>") ; f .Close ();

Геворг 24.03.2011 11:15

А ты сделай через php
открываеш файл
$fh = f o p e n ( " f i l e l . t x t " , " w " ) ;\открываеш файл
$line = f g e t s ( $ f h ) ;\Вытаскиваеш всё что нужно
или допустим считаеш все строчки из файла
while(ifeof($fh) )
{
$line = rtrim(fgets($fh));
echo "$line";
}
fclose($fh)

Vulkan 24.03.2011 11:28

Esca, используя javascript, файл можно будет получить только с этого же сайта на котором запускаете скрипт. Получить можно так (в скрипте 'file.txt' замените на адрес файла который вам нужен):
function getXmlHttp() {
    var xmlhttp;
    try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
            xmlhttp = false;
        }
    }
    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
        xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
}

(function () {
    var xmlhttp = getXmlHttp();
    xmlhttp.open('GET', 'file.txt', false);
    xmlhttp.send(null);
    if (xmlhttp.status == 200) {
        var response = xmlhttp.responseText;
        alert(response);
    }
})();

При загрузке страницы посылается ajax запрос к файлу, далее его содержимое записывается в переменную response, а потом содержимое переменной выводится на экран alert'ом.
Подробнее тут.

Magneto 24.03.2011 14:52

Код который написала девушка работает только в IE. Этот код позволяет работать с локальной файловой системой через ActiveX.

К сожалению я не знаю какие методы надо использовать чтоб прочитать текстовый файл.

Возможно нужно поискать на http://msdn.microsoft.com/ru-RU.

victor_as 25.03.2014 23:34

как вывести текст не alert-ом, а например эту переменную response с текстом на страничке

KNeaDeD 24.06.2015 17:31

Цитата:

Сообщение от victor_as (Сообщение 304317)
как вывести текст не alert-ом, а например эту переменную response с текстом на страничке

Готовый код:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>t</title>
<style type="text/css">
</style>
<script language="JavaScript">
function readfile()
{
var fso,filehandle,contents;
fso = new ActiveXObject("Scripting.FileSystemObject");
filehandle = fso.OpenTextFile("C:\\Time\\info.txt",1);
contents = filehandle.ReadAll();
if (contents) document.all("filecontents").value = contents;
filehandle.close();
}
</script>
</head>
<body onload="readfile()">
<textarea id="filecontents" cols="50" rows="30"></textarea>
</body>
</html>

Открываете через IE (проверялось на 11 версии), запрашивает разрешение ActiveX, разрешаете.
Считывает данные из Диска С, папка Time, файл info.txt
И выводит в текстовый блок filecontents.

Мне интересно другое - как бы записать в этот текстовый документ данные, Javascript'ом? Создать и записать туда - получается, а если я хочу просто открыть и записать? Вот это конечно да...

kobezzza 24.06.2015 18:52

Лучше юзать аплеты или flash для таких задач, т.к. active x тока под ИЕ.

KNeaDeD 24.06.2015 18:55

У меня произошло озарение!

А вот и возможно! Тех кто писал выше, что это невозможно - проклинаю 10 раз!
Делюсь двумя вариантами с комментариями.
Первый - высвечивает текстовый блок, в котором ты забиваешь что-нибудь, и скрипт "дописывает" в существующий файл.
<!DOCTYPE html>
<html>
<head>
<title>Open and Write</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=10" />
<script language="JavaScript">
function WriteToFile()
{
var fso = new ActiveXObject('Scripting.FileSystemObject');
filehandle = fso.OpenTextFile("C:\\Time\\info.txt",1); /* Открывает файл*/
var first = filehandle.ReadAll(); /* Читает из файла и переменная first и есть весь текст, который он считал*/
var s = fso.CreateTextFile("C:\\Time\\info.txt", true); /* перезаписывает файл, открывает для редактирования*/
var second = document.getElementById("filecontents").value; /* Читает из текстбокса filecontents и переменная second и есть весь текст, который он считал*/
s.WriteLine (first); /* записывает весь текст из переменной first, имитирует Enter*/
s.WriteLine (second); /* записывает весь текст из переменной second, имитирует Enter*/
s.Close(); /*закрывает файл*/
}
</script>
</head>
<body>
<textarea id="filecontents" cols="50" rows="30"></textarea>

<input type="button" value="Дописать" onclick="WriteToFile()">
</body>
</html>

Второй - считывает из файла, и высвечивает в текстблок. Ты там редактируешь, нажимаешь "Дописать", он заменяет файл с текстом из текстблока

<!DOCTYPE html>
<html>
<head>
<title>Open and Write</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=10" />
<script language="JavaScript">
function readfile()
{
var fso,filehandle,contents;
fso = new ActiveXObject("Scripting.FileSystemObject");
filehandle = fso.OpenTextFile("C:\\Time\\info.txt",1);/* Открывает файл*/
contents = filehandle.ReadAll(); /* Читает из файла и переменная contents и есть весь текст, который он считал*/
if (contents) document.all("filecontents").value = contents; /* Вставляет в текстбокс filecontents текст contents*/
filehandle.close();/* Закрывает файл*/
}

function WriteToFile()
{
var fso = new ActiveXObject('Scripting.FileSystemObject');
var s = fso.CreateTextFile("C:\\Time\\info.txt", true); /* перезаписывает файл, открывает для редактирования*/
var second = document.getElementById("filecontents").value; /* Читает из текстбокса filecontents и переменная second и есть весь текст, который он считал*/
s.WriteLine (second); /* записывает весь текст из переменной second, имитирует Enter*/
s.Close(); /*закрывает файл*/
}
</script>
</head>
<body onload="readfile()">
<textarea id="filecontents" cols="50" rows="30"></textarea>

<input type="button" value="Дописать" onclick="WriteToFile()">
</body>
</html>

KNeaDeD 24.06.2015 18:58

Отдельно могу выслать тоже самое, только реализованное во Flash (ActionScript3)
Он в принципе тоже обращается к JavaScript, тоже работает только на ИЕ, и тоже без запроса сохраняет куда надо.
В чем отличие - оформлять можно по-разному форму эту. Фотошопом, например :)

+ валяется в интернете Flash файл с исходниками называется loadsavetextfile
Там он подгружает текст по кнопке, и сохраняет по кнопке.
В чем отличие - он предлагает пользователю откуда считать данные, и куда и под каким именем сохранить (или перезаписать)


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