Объект FileSystemObject метод CreateTextFile — Как создать текстовый файл

Объект FileSystemObject метод CreateTextFile — Как создать текстовый файл Объектная модель Windows Script Host

Всем привет, с вами автор блога scriptcoding.ru. В этой статье мы подробно рассмотрим метод объекта FileSystemObject (fso) CreateTextFile, который показывает, как создавать текстовый файл. Метод CreateTextFile fso объекта позволяет получить доступ к другому объекту – TextStream, который в свою очередь отвечает за чтение и запись данных в созданный текстовый файл.

Прежде всего нужно сделать небольшое лирическое отступление… Смотрите, как создать текстовый файл рядовыми методами без программирования? В голову сразу приходит текстовый редактор Блокнот. Как и с любым каталогом, создать текстовый файл можно всего в два этапа: щелкаем правой кнопкой мыши по пустому месту на диске или в директории, далее из контекстного меню выбираем пункт «Создать/Текстовый документ«, далее просто задаем имя файла и все. Но, в большинстве случаев достаточно открыть программу Блокнот и уже оттуда сохранить текстовый файл в нужном месте.

Хорошо, теперь можно приступить к программированию, но сначала, давайте рассмотрим параметры метода CreateTextFile, который и показывает как создать текстовый файл:

CreateTextFile(Filename [,Overwrite[, Unicode]]) – Видим, что метод принимает три параметра, только первый параметр является обязательным.

  • Filename – Данный параметр содержит строку, которая определяет путь и имя для создаваемого текстового файла. Если указать только имя файла, то он будет создан в текущем каталоге (каталог, из которого произведен запуск сценария)
  • Overwrite – Параметр является необязательным. Может принимать логическое true – перезаписать файл, если он уже существует или false – возможность перезаписи отсутствует. По умолчанию, стоит значение false.
  • Unicode – Данный параметр не является обязательным, он определяет кодировку создаваемого текстового файла. Может принимать логическое значение true – формат Unicode или false – формат ASCII.

Хорошо, теперь можно приступить к программированию, но сначала небольшое пояснение.

Используя метод fso CreateTextFile, мы создаем не просто текстовый файл с данными, а произведем запись в поток. Поток – данное выражение присуще только файловой системе NTFS. Суть заключается в том, что к любому документу или даже диску можно привязать один или несколько потоков. Как создать новый текстовый файл. Например, идёт имя файла, двоеточие, имя потока. Поток, содержит имя и расширение.

Для эксперимента, откройте командную строку и пропишите следующий код:

echo"Hello, word">new.txt:potok.txt

В данном случае, к файлу new.txt будет привязан поток potok.txt и в него будет записана строка «Hello, word«. Вы увидите, что документ содержит нулевой размер, и при попытке открыть его с помощью простого блокнота вы ничего не увидите. Для этого в окне «Пуск/Выполнить» нужно прописать:

notepad new.txt:potok.txt

Что то подобное мы сделаем с помощью сценариев.

как создать новый текстовый файл

Для начала создадим сценарий createtextfile vbs и пропишем в нем следующие строки кода:

'**********************************************' fso createtextfile ' как создать текстовый файл' запись данных в поток' createtextfile.vbs'********************************************** OptionExplicit dim fso, c_file, t_file, WshShell, data, data_file ' создаем ссылку на объект Wscript.Shellset WshShell = CreateObject("Wscript.Shell")' создаем ссылку на объект Scripting.FileSystemObjectset fso=CreateObject ("Scripting.FileSystemObject"'------------------------------------------------------------------------------------' открываем текущий сценарий и записываем' его содержимое в переменную data'------------------------------------------------------------------------------------ set c_file=fso.OpenTextFile(WScript.ScriptFullName, 1, false)data = c_file.ReadAllc_file.Close() '------------------------------------------------------------------------------------                                                                                                                                                                                                                            как создать новый текстовый файл '------------------------------------------------------------------------------------' создаем в текущей папке текстовый документ' записываем в поток secret' содержимое переменной data'------------------------------------------------------------------------------------ set t_file=fso.CreateTextFile("my_file.txt:secret.txt", true)t_file.WriteLine(data)t_file.Close () '------------------------------------------------------------------------------------ ' освобождаем ссылку на объектset t_file = nothing '------------------------------------------------------------------------------------' открываем созданный документ и считываем' данные из потока data'------------------------------------------------------------------------------------ set t_file=fso.OpenTextFile(WshShell.CurrentDirectory & "my_file.txt:secret.txt", 1, false)data_file = t_file.ReadAllt_file.Close() '------------------------------------------------------------------------------------ ' выводим содержимое потока' если использовать для вывода функцию MsgBox' будет показана только часть данныхWScript.Echo data_file

Тут стоит обратить внимание на следующую особенность, если мы попытаемся с помощью функции OpenTextFile открыть документ my_file.txt, не прописав после него через двоеточие имя потока, то получим ошибку:

Ввод данных за пределами файла

Скачать архив с примерами

Видимо, сервер Windows Script Host умеет определять, что в документе содержится скрытая информация. Также, вы заметили, что вместо функции MsgBox для вывода данных я использовал стандартную WScript.Echo. Не знаю почему, но MsgBox выводит только часть данных. Также, в данном примере я использовал собственную функцию CreateObject языка VBScript, а для освобождения ссылки на объект применил ключевое слово nothing.

как программным путем создать текстовый файл

А вот аналогичный сценарий createtextfile vbs, но уже на языке jscript:

//**********************************************// fso createtextfile // как создать текстовый файл// запись данных в поток// createtextfile.js//********************************************** var fso, c_file, t_file, read_file, WshShell, data, data_file; // создаем ссылку на объект Wscript.ShellWshShell = WScript.CreateObject("Wscript.Shell");// создаем ссылку на объект Scripting.FileSystemObjectfso=WScript.CreateObject("Scripting.FileSystemObject"); //------------------------------------------------------------------------------------// открываем текущий сценарий и записываем// его содержимое в переменную data//------------------------------------------------------------------------------------ c_file=fso.OpenTextFile(WScript.ScriptFullName,1,false);data = c_file.ReadAll();c_file.Close(); //------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------// создаем в текущей папке текстовый документ// записываем в поток secret// содержимое переменной data//------------------------------------------------------------------------------------ t_file=fso.CreateTextFile("my_file.txt:secret_1.txt",true);t_file.WriteLine(data);t_file.Close(); //------------------------------------------------------------------------------------                                                                                                                                                                                                                                                                    как создать новый текстовый файл //------------------------------------------------------------------------------------// открываем созданный документ и считываем// данные из потока data//------------------------------------------------------------------------------------ read_file=fso.OpenTextFile(WshShell.CurrentDirectory+"\my_file.txt:secret_1.txt",1,false);data_file = read_file.ReadAll();read_file.Close(); //------------------------------------------------------------------------------------ // выводим содержимое потокаWScript.Echo(data_file);

В этом примере, мы просто привязали еще один поток к файлу. Фактически, один поток будет содержать содержимое скрипта на языке vbscript (createtextfile vbs), а другой – содержимое на языке jscript (createtextfile js).

И так, мы рассмотрели как создать текстовый файл программным путем с помощью метода CreateTextFile и с помощью стандартных средств Windows.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий