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

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

Всем привет, с вами снова сайт scriptcoding.ru. Продолжая изучать объект FileSystemObject, мы рассмотрим метод OpenTextFile, который показывает, как открыть текстовый файл программным путем.

Прежде всего, стоит определиться, как открыть текстовый файл средствами операционной системы Windows. Дело в том, что файлы, как правило, делятся на два типа: текстовые и двоичные. Двоичные – в большинстве случаев это исполняемые файлы с расширение exe, bat и так далее. Для текстовых документов актуальным являются такие моменты как кодировка, перевод строки и так далее. Если брать простой текстовый документ с расширением txt, то его можно открыть простым редактором Блокнот, а вот для корректного отображения документа с расширением doc, нужно как минимум приложение Microsoft Word. В общем, все зависит от расширения текстового файла, хотя для простоты дела, вы можете выбрать документ в менеджере Total Commander и нажать клавишу F3.

Как открыть текстовый файл

Хорошо, теперь вернемся к методу, который показывает, как открыть заданный текстовый файл. Метод fso OpenTextFile является переходным звеном, так как он позволяет получить доступ к текстовому файлу (возможность считывания данных и открытие документа). Давайте рассмотрим параметры метода OpenTextFile FSO объекта:

OpenTextFile(filename [,iomode [,create [,format]]]) – После вызова метода, он автоматически предоставляет доступ к объекту Textstream. Давайте рассмотрим описание параметров:

  • filename – собственно, путь к текстовому файлу. В принципе, мы можем задать путь к любому файлу.
  • iomode – отвечает за режим доступа, например, ForReading — только чтение (1), ForWriting — для записи (2), ForAppending — для добавления (8).
  • Create — параметр определяет, что делать, если файл с подобным именем не существует (параметр filename): true – документ создастся, false – документ создаваться не будет.
  • format – задает кодировку: TristateUseDefault – формат системы по умолчанию (-2), TristateTrue — формат Unicode (-1), TristateFalse – формат ASCII (0).

Хорошо, теперь давайте приступим к программированию, а именно, рассмотрим, как можно открыть текстовый файл программным путем. Мы рассмотрим два примера, один на языке VBScript, а другой на языке Jscript. Начнем с языка программирования vbscript:

как программно открыть текстовый файл
' ----------------------------------------------------------
' Объект FileSystemObject метод OpenTextFile
' Как открыть текстовый файл
' OpenTextFile.vbs
' ----------------------------------------------------------
 
Option Explicit
 
dim FSO, WshShell, Folder, Files, Folders, TempPath, TxtFile
dim cur_dir, list, i, j, result, t_file, data_file
 
Set FSO = CreateObject("Scripting.FileSystemObject")
 
' формируем ссылку на объект
set WshShell = WScript.CreateObject("WScript.Shell")
 
' текущий каталог
cur_dir = WshShell.CurrentDirectory
 
list = "Содержимое текущей папки:" & vbCrLf & vbCrLf
 
'Создаем объект Folder для для текущей папки
set Folder=FSO.GetFolder(cur_dir)
 
'Создаем коллекцию файлов
set Files=Folder.Files
 
'Создаем коллекцию каталогов
set Folders=Folder.SubFolders
 
list = list & "Список файлов:" & vbCrLf & vbCrLf
 
' начинаем перебор коллекции файлов                                                                                                                                                                                                                                                                                как открывать текстовые файлы
For Each i In Files
    ' формируем список файлов
    list = list & i.Name & vbCrLf
 
    Open_Text_File(i.Path)
 
Next
 
list = list & vbCrLf & "Список катлогов:" & vbCrLf & vbCrLf
 
' начинаем перебор коллекции папок
For Each j In Folders
    ' формируем список каталогов
    list = list & j.Name & vbCrLf
Next
 
ShowInNotepad(list)
 
'Процедура открытия текстового файла
Sub Open_Text_File(file_path)
    result = MsgBox("Хотите открыть документ " & file_path, vbOkCancel + vbInformation, "Открытие файла")
    If result = vbOK Then
        set t_file=fso.OpenTextFile(file_path, 1, false)
        data_file = t_file.ReadAll
        t_file.Close()
        ShowInNotepad(data_file)
    End If
End Sub
 
'Процедура создания временного файла с данными
Sub ShowInNotepad(StrToFile)
    TempPath = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%TEMP%") & "\" & FSO.GetTempName
    Set TxtFile = FSO.CreateTextFile(TempPath)
    TxtFile.WriteLine(StrToFile)
    TxtFile.Close
    CreateObject("WScript.Shell").Run "wordpad.exe " & TempPath
End Sub

Давайте начнем с конца, видим, что мы создали две процедуры:

Open_Text_File – в качестве параметра принимает строковое значение, путь к документу, который нужно открыть. В самой процедуре мы выводим диалоговое окно с помощью функции MsgBox, если пользователь нажмет на ОК, то произойдет вызов метода OpenTextFile (fso.OpenTextFile), считывание содержимого документа (ReadAll), закрытие документа и вызов процедуры ShowInNotepad. Как открывать текстовый файл.

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

ShowInNotepad – процедура принимает один параметр – данные, которые нужно записать. Сначала создается временный текстовый файл, его расширение будет tmp, в него будут записаны данные параметра. В конце происходит вызов метода Run объект WScript.Shell, который произведет открытие временного файла с помощью программы wordpad.exe, вы вправе изменить текстовый редактор на любой другой.

как можно открыть текстовый файл

А вот аналогичный пример на языке Jscript:

// ----------------------------------------------------------
// Объект FileSystemObject метод OpenTextFile
// Как открыть текстовый файл
// OpenTextFile.js
// ----------------------------------------------------------
 
var FSO, WshShell, Folder, Files, Folders, TempPath, TxtFile;
var cur_dir, list = "Содержимое текущей папки:\n\n";
 
FSO = WScript.CreateObject("Scripting.FileSystemObject");
 
// формируем ссылку на объект
WshShell = WScript.CreateObject("WScript.Shell");
 
// текущий каталог
cur_dir = WshShell.CurrentDirectory;
 
//Создаем объект Folder для для текущей папки
Folder=FSO.GetFolder(cur_dir);
 
//Создаем коллекцию файлов
Files=new Enumerator(Folder.Files);
 
//Создаем коллекцию каталогов
Folders=new Enumerator(Folder.SubFolders);
 
list += "Список файлов:\n\n";
 
// начинаем перебор коллекции файлов
for (; !Files.atEnd(); Files.moveNext()){
     list+=Files.item().Name+"\n"; 
 
     Open_Text_File(Files.item().Path)
}
 
list += "\nСписок катлогов:\n\n";
 
// начинаем перебор коллекции папок                                                                                                                                                                                                            как открывать текстовые файлы
for (; !Folders.atEnd(); Folders.moveNext()){
     list+=Folders.item().Name+"\n"; 
}
 
ShowInNotepad(list);
 
//Функция открытия текстового файла
function Open_Text_File(file_path){
 
var Msg = "Хотите открыть документ " + file_path;
var Titl = "Открытие файла";
 
var result, t_file, data_file;
 
var vbOKCancel = 1;
var vbOK = 1;
var vbInformation = 64;
 
    result = WshShell.Popup(Msg, 0, Titl, vbOKCancel + vbInformation);
    if (result == vbOK) { 
        t_file=FSO.OpenTextFile(file_path, 1, false);
        data_file = t_file.ReadAll();
        t_file.Close();
        ShowInNotepad(data_file);
    }
}
 
//Функция создания временного файла с данными
function ShowInNotepad(StrToFile){
    TempPath = WScript.CreateObject("WScript.Shell").ExpandEnvironmentStrings("%TEMP%") + "\\" + FSO.GetTempName();
    TxtFile = FSO.CreateTextFile(TempPath);
    TxtFile.WriteLine(StrToFile);
    TxtFile.Close();
    WScript.CreateObject("WScript.Shell").Run ("wordpad.exe " + TempPath);
}

И так, мы рассмотрели метод OpenTextFile объекта FileSystemObject, который показывает как открыть текстовый файл. Если у вас возникли вопросы по сценарию, пишите в комментариях, буду рад ответить.

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

  1. Евгений

    Здравствуй Владимир! Помоги, пожалуйста, разобраться с различными кодировками. Например, нужно текстовые файлы переводить из DOS в WIN-1251 и наоборот. Ничего внятного Интернет не дает. Встроенных функций я так и не нашел. И вообще, благодарю тебя за сайт и информацию!!!!!

    Ответить
    1. Coding автор

      Если не ошибаюсь, то поставленную задачу можно решить с помощью объекта ADODB.Stream. Я просто с ним не работал, поэтому и не описывал. Описание на MSDN. msdn.microsoft.com/en-us/library/windows/desktop/ms677486%28v=vs.85%29.aspx

      Ответить