На этом шаге мы рассмотрим особенности записи данных в файл.
Для записи данных в открытый текстовый файл используются следующие методы объекта файла:
Код методов записи и чтения данных:
var filepath = "C:\\testfile.htm"; var fso = new ActiveXObject("Scripting.FileSystemObject"); // Создание файла в режиме записи var myfile = fso.CreateTextFile(filepath, true); myfile.WriteLine("<html>"); myfile.WriteLine("<h1>Привет всем!</h1>"); myfile.WriteLine("Это пробная запись в файл"); myfile.Write("<script>alert( 'Какое-нибудь сообщение'); </script>"); myfile.WriteBlankLines(2); // Две пустые строки myfile.Close(); // Закрываем файл var fso = new ActiveXObject("Scripting.FileSystemObject"); // Открываем файл в режиме добавления var myfile = fso.OpenTextFile(filepath, 8); myfile.Write("</html>"); // Дописываем myfile.Close(); // Закрываем файл var fso = new ActiveXObject("Scripting.FileSystemObject"); // Открываем файл в режиме чтения var myfile = fso.OpenTextFile(filepath, 1); alert(myfile.Read(6)); // Читаем 6 байтов: "<html>" myfile.SkipLine(); // Пропускаем строку // читаем третью строку: "<h1>Привет всем!</h1>" alert (myfile.ReadLine()); myfile.Close();// Закрываем файл
Реализация этого кода приведена на рисунке 1.
Рис.1. Вывод третьей строки
На рисунке 2 приведен результат просмотра в браузере созданного файла
Рис.2. Результат просмотра в браузере созданного документа
Можно выражения с методами чтения данных передать в качестве параметра методу отображения сообщений WScript.Echo(). Например, WScript.Echo(myfile.ReadLine());.
Мы можем прочитать файл построчно в массив, чтобы потом обработать его с помощью методов массива и строкового объекта. Ниже приведен код функции, которая читает текстовый файл и возвращает массив. Код функции, которая читает текстовый файл и возвращает массив:
function FileToArray(filepath) { var fso = new ActiveXObject("Scripting.FileSystemObject"); var file = fso.GetFile(filepath); var size = file.Size; // Объем файла file = fso.OpenTextFile(filepath); file.Skip(size); // Перемещаем указатель в конец файла var lines = file.Line-1; // Количество строк file.Close(); var fso = new ActiveXObject("Scripting.FileSystemObject"); var file = fso.OpenTextFile(filepath); var x = new Array(); var i = 0; while (i<lines) { x[i] = file.ReadLine(); // Чтение строк файла i++; } file.Close(); return x; // Возвращаем массив строк файла }
Результат использования этой функции приведен на рисунке 3.
Рис.3. Результат использования функции
Вот полный текст приложения.
<HTML> <HEAD> <TITLE>Чтение файла в массив</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-- // Чтение файла в массив function FileToArray(filepath) { var fso = new ActiveXObject("Scripting.FileSystemObject"); var file = fso.GetFile(filepath); var size = file.Size; // Объем файла file = fso.OpenTextFile(filepath); file.Skip(size); // Перемещаем указатель в конец файла var lines = file.Line-1; // Количество строк file.Close(); var fso = new ActiveXObject("Scripting.FileSystemObject"); var file = fso.OpenTextFile(filepath); var x = new Array(); var i = 0; while (i<lines) { x[i] = file.ReadLine(); // Чтение строк файла i++; } file.Close(); return x; // Возвращаем массив строк файла } function f1(x) { alert (FileToArray(x)); } //--> </SCRIPT> </HEAD> <BODY> <H2>Чтение файла в массив</H2> <FORM NAME="frm1"> <INPUT TYPE="TEXT" SIZE="40" VALUE="C:\\pr.dat" NAME="pole"><BR> <INPUT TYPE="BUTTON" ONCLICK="f1(frm1.pole.value)" VALUE="Файл в массив"> </FORM> </BODY> </HTML>
В функции FileToArray() дважды создается объект FSO и открывается файл. Первый раз это понадобилось, чтобы узнать количество строк в файле путем перемещения указателя на величину, равную объему файла. При этом указатель оказывается за пределами файла, и, следовательно, количество строк оказывается на 1 меньше, чем значение свойства Line. Невозможно переместить указатель в начало файла. Поэтому мы закрываем файл и вновь его открываем, чтобы начать построчное чтение и запись в элементы массива с помощью оператора цикла.
На следующем шаге мы рассмотрим создание ярлыков.