Объект FileSystemObject обеспечивает доступ к файловой системе Windows. Его конструктор имеет вид:
new ActiveXObject("Scripting.FileSystemObject")
Отметим, что сценарий может создать только один экземпляр данного объекта, сколько бы раз в нем не вызывался данный конструктор.
Следующий пример демонстрирует использование объекта
FileSystemObject для создания текстового файла и вывода в него строки:
var fso = new ActiveXObject("Scripting.FileSystemObject"); // Создаем объект
var file = fso.CreateTextFile("c:\\test.txt", true); // Создаем файл
file.WriteLine("This is a test."); // Выводим в него строку
file.Close(); // Закрываем файл
Примечание. Поскольку
FileSystemObject обеспечивает нам любые манипуляции с файлами и папками компьютера, то по умолчанию установки безопасности Internet Explorer запрещают его использование на стороне клиента. Поэтому для использования большинства из описанных ниже методов вы должны разрешить исполнение в Internet Explorer небезопасных элементов ActiveX, что серьезно угрожает целостности вашей системы.
Свойства объекта FileSystemObject
| Свойство |
Описание |
| Drives |
Коллекция дисков локального компьютера. |
Методы объекта FileSystemObject
| Метод |
Описание |
| BuildPath |
Создает имя пути из двух компонентов. |
| CopyFile |
Копирует один или несколько файлов. |
| CopyFolder |
Полностью копирует папку. |
| CreateFolder |
Создает новую папку. |
| CreateTextFile |
Создает текстовый файл. |
| DeleteFile |
Удаляет файл. |
| DeleteFolder |
Полностью удаляет папку. |
| DriveExists |
Проверяет, существует ли данный диск. |
| FileExists |
Проверяет, существует ли данный файл. |
| FolderExists |
Проверяет, существует ли данная папка. |
| GetAbsolutePathName |
Возвращает полное название пути. |
| GetBaseName |
Извлекает имя файла из пути. |
| GetDrive |
Возвращает заданный объект Drive. |
| GetDriveName |
Извлекает имя диска из пути. |
| GetExtensionName |
Извлекает расширение файла из пути. |
| GetFile |
Возвращает заданный объект File. |
| GetFileName |
Извлекает спецификацию файла из пути. |
| GetFolder |
Возвращает заданный объект Folder. |
| GetParentFolderName |
Возвращает имя отцовской папки. |
| GetSpecialFolder |
Возвращает объект Folder для системной папки. |
| GetTempName |
Создает имя временного файла. |
| MoveFile |
Переносит файл. |
| MoveFolder |
Полностью перемещает папку. |
| OpenTextFile |
Открывает текстовый файл. |
Свойство Drives
Синтаксис: fso.Drives
Атрибуты: { DontEnum, DontDelete, ReadOnly }
Свойство
Drives возвращает коллекцию объектов
Drive, соответствующих всем физическим и логическим дискам локального компьютера. Для просмотра этой коллекции следует пользоваться объектом
Enumerator.
Пример использования свойства
Drives был приведен ранее.
Метод BuildPath
Синтаксис: fso.BuildPath(путь, имя)
Аргументы: путь, имя — строковые выражения
Результат: строковое значение
Метод
BuildPath добавляет к
пути заданное
имя и возвращает результирующую строку. При необходимости перед именем добавляется разделитель "
\". Например, следующий сценарий
var fso = new ActiveXObject("Scripting.FileSystemObject");
var newpath = fso.BuildPath("c:\\My Documents", "New Folder");
document.write(newpath);
выведет на экран обозревателя текст
c:\My Documents\New Folder.
Метод CopyFile
Синтаксис: fso.CopyFile(источник, цель [, флаг]?)
Аргументы: источник, цель — строковые выражения
флаг — логическое значение
Метод
CopyFile копирует один или несколько файлов. При этом строка
источник задает спецификацию исходного файла и может содержать подстановочные знаки "
*" и "
?" в последнем компоненте, строка
цель задает имя результирующего файла или папки, а необязательный аргумент
флаг указывает, следует ли заменять при копировании существующие файлы (по умолчанию он равен
true, т. е. существующие файлы заменяются).
Если
источник содержит подстановочные знаки или
цель заканчивается символом "
\", то
цель считается именем папки, в которую копируются исходные файлы. В остальных случаях
цель считается именем результирующего файла. Сам процесс копирования происходит так:
- если нет файлов, соответствующих спецификации источника, то метод завершается ошибкой;
- если файла с именем цель нет, то производится копирование файла;
- если файл цель существует и флаг равен false, то метод завершается ошибкой, иначе делается попытка копирования источника поверх цели; при этом независимо от значения флага, попытка замены существующего файла с атрибутом "только для чтения" завершается ошибкой;
- если цель является каталогом, то метод завершается ошибкой.
Пример: следующий сценарий копирует все файлы из корневой папки дискеты A в папку d:\Temp.
var fso = new ActiveXObject("Scripting.FileSystemObject");
fso.CopyFile("a:\\*.*", "d:\\Temp");
Метод CopyFolder
Синтаксис: fso.CopyFolder(источник, цель [, флаг]?)
Аргументы: источник, цель — строковые выражения
флаг — логическое выражение
Метод
CopyFolder копирует одну папку в другую, включая подпапки. При этом строка
источник задает спецификацию исходной папки и может содержать подстановочные знаки "
*" и "
?" в последнем компоненте, строка
цель задает имя результирующей папки, а необязательный аргумент
флаг указывает, следует ли заменять при копировании существующие файлы (по умолчанию он равен
true, т. е. существующие файлы заменяются).
Если
источник содержит подстановочные знаки или
цель заканчивается символом "
\", то
цель считается именем существующей папки, в которую копируются исходные файлы. В остальных случаях
цель считается именем новой папки, которую необходимо создать. Сам процесс копирования происходит так:
- если нет файлов, соответствующих спецификации источника, то метод завершается ошибкой;
- если папки с именем цель нет, то она создается и производится копирование файлов;
- если цель задает имя существующего файла, то метод завершается ошибкой;
- если файлы исходной папки уже есть в цели и флаг равен false, то метод завершается ошибкой, иначе делается попытка копирования источника поверх цели; при этом независимо от значения флага, попытка замены существующего файла с атрибутом "только для чтения" завершается ошибкой.
Пример: следующий сценарий копирует все файлы и папки из корневой папки дискеты A в папку d:\Temp.
var fso = new ActiveXObject("Scripting.FileSystemObject");
fso.CopyFolder("a:\\", "d:\\Temp");
Метод CreateFolder
Синтаксис: fso.CreateFolder(имя)
Аргументы: имя — строковое выражение
Метод
CreateFolder создает папку с заданным
именем. Если такая папка уже есть, то метод завершается ошибкой.
Пример: следующий сценарий создает папку C:\New Folder.
var fso = new ActiveXObject("Scripting.FileSystemObject");
fso.CreateFolder("c:\\New Folder");
Метод CreateTextFile
Синтаксис: fso.CreateTextFile(имя [[, флаг]?, unicode]?)
Аргументы: имя — строковое выражение
флаг, unicode — логические выражения
Результат: новый объект TextStream
Метод
CreateTextFile создает текстовый файл с заданным
именем. При этом необязательный аргумент
флаг указывает, следует ли удалять существующий файл с этим именем (по умолчанию он равен
true, т. е. существующие файлы заменяются новыми), а необязательный аргумент
unicode задает кодировку символов файла (
true означает кодировку Unicode, а
false — кодировку ANSI; по умолчанию создается файл в кодировке ANSI). Пример:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var ts = fso.CreateTextFile("c:\\file.txt", false);
ts.WriteLine("Тестовая строка.");
ts.Close();
Метод DeleteFile
Синтаксис: fso.DeleteFile(имя [, флаг]?)
Аргументы: имя — строковое выражение
флаг — логическое выражение
Метод
DeleteFile удаляет файл с заданным
именем. При этом необязательный аргумент
флаг указывает, следует ли удалять файл, имеющий атрибут "только для чтения" (по умолчанию он равен
false, т. е. такие файлы не удаляются). Если файла с данным именем нет, то метод завершается ошибкой. Пример:
var fso = new ActiveXObject("Scripting.FileSystemObject");
fso.DeleteFile("c:\\file.txt", true);
Метод DeleteFolder
Синтаксис: fso.DeleteFolder(имя [, флаг]?)
Аргументы: имя — строковое выражение
флаг — логическое выражение
Метод
DeleteFolder удаляет папку с заданным
именем. При этом необязательный аргумент
флаг указывает, следует ли удалять папку, имеющий атрибут "только для чтения" (по умолчанию он равен
false, т. е. такие папки не удаляются). Если папки с данным именем нет, то метод завершается ошибкой. Пример:
var fso = new ActiveXObject("Scripting.FileSystemObject");
fso.DeleteFile("c:\\file.txt", true);
Метод DriveExists
Синтаксис: fso.DriveExists(имя)
Аргументы: имя — строковое выражение
Результат: логическое выражение
Метод
DriveExists проверяет, существует ли диск с заданным именем на локальном компьютере, и возвращает соответствующий результат. Строка
имя может состоять из буквы, задающей имя диска ("c"), из буквы с двоеточием ("c:"), из буквы с двоеточием и разделителем пути ("c:\\") или содержать спецификацию сетевого диска ("\\computer3\\public1").
Примечание. Этот метод не проверяет наличие диска в дисководе со сменными дисками, а только существование самого дисковода. Для проверки наличия диска в дисководе пользуйтесь методом
Drive.IsReady. Пример:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var b = fso.DriveExists("e"); // true, если есть диск E
Метод FileExists
Синтаксис: fso.FileExists(имя)
Аргументы: имя — строковое выражение
Результат: логическое выражение
Метод
FileExists проверяет, существует ли файл с заданным
именем на локальном компьютере, и возвращает соответствующий результат. Строка
имя должна содержать спецификацию файла.
var fso = new ActiveXObject("Scripting.FileSystemObject");
var b = fso.FileExists("c:\\test.htm"); // true, если данный файл существует
Метод FolderExists
Синтаксис: fso.FolderExists(имя)
Аргументы: имя — строковое выражение
Результат: логическое выражение
Метод
FolderExists проверяет, существует ли папка с заданным
именем на локальном компьютере, и возвращает соответствующий результат. Строка
имя должна содержать спецификацию папки.
var fso = new ActiveXObject("Scripting.FileSystemObject");
var b = fso.FolderExists("c:\\My Pictures"); // true, если данная папка существует
Метод GetAbsolutePathName
Синтаксис: fso.GetAbsolutePathName(путь)
Аргументы: путь — строковое выражение
Результат: строковое значение
Метод
GetAbsolutePathName преобразует заданный
путь в полное имя пути и возвращает результирующую строку. Пусть, например, текущим каталогом является c:\My Documents\Letters. Следующая таблица иллюстрирует результаты применения метода
GetAbsolutePathName к различным входным аргументам.
| имя |
GetAbsolutePathName(имя) |
| "" |
"c:\\My Documents\\Letters" |
| ".." |
"c:\\My Documents" |
| "\\" |
"c:\\" |
| "oct2000\\*.doc" |
"c:\\My Documents\\Letters\\oct2000\\*.doc" |
| "file.txt" |
"c:\\My Documents\\Letters\\file.txt" |
Метод GetBaseName
Синтаксис: fso.GetBaseName(путь)
Аргументы: путь — строковое выражение
Результат: строковое значение
Метод
GetBaseName извлекает из заданного
пути его последний компонент: имя каталога или имя файла. В последнем случае имя файла возвращается без расширения. Примеры:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var s1 = fso.GetBaseName("c:\\My Documents\\Letters"); // s1 равно "Letters"
var s2 = fso.GetBaseName("c:\\My Documents\\Letters\\d1.doc"); // s2 равно "d1"
Метод GetDrive
Синтаксис: fso.GetDrive(имя)
Аргументы: имя — строковое выражение
Результат: объект Drive
Метод
GetDrive возвращает объект
Drive, соответствующий диску с заданным именем. Строка
имя может состоять из буквы, задающей имя диска ("c"), из буквы с двоеточием ("c:"), из буквы с двоеточием и разделителем пути ("c:\\") или содержать спецификацию сетевого диска ("\\computer3\\public1"). Если диска с данным именем не существует, метод завершается ошибкой. Пример: следующая функция извлекает имя диска из аргумента путь и возвращает объем свободного пространства на этом диске в мегабайтах.
function DriveSpace(path) {
var fso = new ActiveXObject("Scripting.FileSystemObject");
var d = fso.GetDrive(fso.GetDriveName(fso.GetAbsolutePathName(path)));
return d.FreeSpace/1024/1024;
}
Метод GetDriveName
Синтаксис: fso.GetDriveName(путь)
Аргументы: путь — строковое выражение
Результат: строковое значение
Метод
GetDriveName извлекает из заданного
пути имя диска. Если его там нет, то возвращается пустая строка. Пример:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var d = fso.GetDriveName(fso.GetAbsolutePathName(path));
Метод GetExtensionName
Синтаксис: fso.GetExtensionName(путь)
Аргументы: путь — строковое выражение
Результат: строковое значение
Метод
GetExtensionName извлекает из заданного
пути расширение его последнего компонента, т. е. расширение файла, если это имя файла, и пустую строку, если это имя каталога. Примеры:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var s1 = fso.GetExtensionName("c:\\My Documents\\Letters"); // s1 равно ""
var s2 = fso.GetExtensionName("c:\\My Documents\\Letters\\d1.doc"); // s2 равно "doc"
Метод GetFile
Синтаксис: fso.GetFile(имя)
Аргументы: имя — строковое выражение
Результат: объект File
Метод
GetFile возвращает объект
File, соответствующий файлу с заданным
именем. Если файла с данным именем не существует, метод завершается ошибкой. Пример: следующая функция возвращает дату создания заданного файла.
function DateCreated(path) {
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.GetFile(path);
return f.DateCreated;
}
Метод GetFileName
Синтаксис: fso.GetFileName(путь)
Аргументы: путь — строковое выражение
Результат: строковое значение
Метод
GetFileName извлекает из заданного
пути его последний компонент: имя каталога или имя файла. В последнем случае имя файла возвращается вместе с расширением. Примеры:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var s1 = fso.GetBaseName("c:\\My Documents\\Letters"); // s1 равно "Letters"
var s2 = fso.GetBaseName("c:\\My Documents\\Letters\\d1.doc"); // s2 равно "d1.doc"
Метод GetFolder
Синтаксис: fso.GetFolder(имя)
Аргументы: имя — строковое выражение
Результат: объект Folder
Метод
GetFolder возвращает объект
Folder, соответствующий папке с заданным
именем. Если папки с данным именем не существует, метод завершается ошибкой. Пример: следующая функция возвращает дату создания заданного папки.
function DateCreated(path) {
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.GetFolder(path);
return f.DateCreated;
}
Метод GetParentFolderName
Синтаксис: fso.GetParentFolderName(путь)
Аргументы: путь — строковое выражение
Результат: строковое значение
Метод
GetParentFolderName извлекает из заданного
пути отцовскую папку его последнего компонента или пустую строку, если такой папки в
пути нет. Примеры:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var s1 = fso.GetParentFolderName("c:\\My Documents\\Letters"); // s1 = "My Documents"
var s2 = fso.GetParentFolderName("file.txt"); // s2 = ""
Метод GetSpecialFolder
Синтаксис: fso.GetSpecialFolder(номер)
Аргументы: номер — числовое выражение
Результат: объект Folder
Метод
GetSpecialFolder возвращает объект
Folder, соответствующий системной папке, заданной аргументом
номер согласно следующей таблицы.
| Номер |
Системная папка |
| 0 |
Папка операционной системы Windows |
| 1 |
Папка System операционной системы Windows |
| 2 |
Папка для хранения временных файлов. |
Например, в системе Windows 98 будут возвращены следующие имена папок:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var s1 = fso.GetSpecialFolder(0).Path; // s1 равно "C:\\WINDOWS"
var s2 = fso.GetSpecialFolder(1).Path; // s2 равно "C:\\WINDOWS\\SYSTEM"
var s3 = fso.GetSpecialFolder(2).Path; // s3 равно "C:\\WINDOWS\\TEMP"
Метод GetTempName
Синтаксис: fso.GetTempName()
Результат: строковое значение
Метод
GetTempName возвращает случайно сгенерированное имя временного файла. Этим методом следует пользоваться для создания временных файлов, которые после создания и использования будут удалены сценарием. Пример:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var tempFolder = fso.GetSpecialFolder(2);
var tempFile = tempFolder.CreateTextFile(fso.GetTempName());
Метод MoveFile
Синтаксис: fso.MoveFile(источник, цель)
Аргументы: источник, цель — строковые выражения
Метод
MoveFile перемещает один или несколько файлов в другое место. При этом строка
источник задает спецификацию исходного файла и может содержать подстановочные знаки "
*" и "
?" в последнем компоненте, а строка
цель задает имя результирующего файла или папки.
Если
источник содержит подстановочные знаки или
цель заканчивается символом "
\", то
цель считается именем папки, в которую перемещаются исходные файлы. В остальных случаях
цель считается именем результирующего файла. Сам процесс перемещения происходит так:
- если нет файлов, соответствующих спецификации источника, то метод завершается ошибкой;
- если файла с именем цель нет, то производится перемещение файла;
- если файл цель существует, то метод завершается ошибкой;
- если цель является каталогом, то метод завершается ошибкой.
Пример: следующий сценарий перемещает все файлы из корневой папки дискеты A в папку d:\Temp.
var fso = new ActiveXObject("Scripting.FileSystemObject");
fso.MoveFile("a:\\*.*", "d:\\Temp");
Метод MoveFolder
Синтаксис: fso.MoveFolder(источник, цель)
Аргументы: источник, цель — строковые выражения
Метод
MoveFolder перемещает одну папку в другую, включая подпапки. При этом строка
источник задает спецификацию исходной папки и может содержать подстановочные знаки "
*" и "
?" в последнем компоненте, а строка
цель задает имя результирующей папки.
Если
источник содержит подстановочные знаки или
цель заканчивается символом "
\", то
цель считается именем существующей папки, в которую перемещаются исходные файлы. В остальных случаях
цель считается именем новой папки, которую необходимо создать. Сам процесс перемещения происходит так:
- если нет файлов, соответствующих спецификации источника, то метод завершается ошибкой;
- если папки с именем цель нет, то она создается и производится перемещение файлов;
- если цель задает имя существующего файла, то метод завершается ошибкой;
- если файлы исходной папки уже есть в цели, то метод завершается ошибкой.
Пример: следующий сценарий перемещает все файлы и папки из корневой папки дискеты A в папку d:\Temp.
var fso = new ActiveXObject("Scripting.FileSystemObject");
fso.CopyFolder("a:\\", "d:\\Temp");
Метод OpenTextFile
Синтаксис: fso.OpenTextFile(имя [[[, режим]?, флаг]?, формат]?)
Аргументы: имя — строковое выражение
режим, формат — числовые выражения
флаг — логическое выражение
Результат: новый объект TextStream
Метод
OpenTextFile открывает текстовый файл с заданным
именем. При этом необязательный аргумент
флаг указывает, следует ли создавать новый файл, если файла с таким именем нет (по умолчанию он равен
false, т. е. файл не создается).
Необязательный аргумент
режим задает режим открытия файла и может принимать следующие значения:
| 1 |
Открыть файл только для чтения. Принято по умолчанию. |
| 2 |
Открыть файл для записи. Запись производится с начала файла, старое содержимое теряется. |
| 8 |
Открыть файл для добавления. Запись производится в конец файла. |
Необязательный аргумент
формат задает кодировку символов файла и может принимать следующие значения:
| 0 |
Открыть файл в кодировке ANSI. Принято по умолчанию. |
| -1 |
Открыть файл в кодировке Unicode. |
| -2 |
Открыть файл в кодировке операционной системы. |
Пример открытия файла в режиме добавления:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var ts = fso.OpenTextFile("c:\\file.txt", 8);
ts.WriteLine("Тестовая строка.");
ts.Close();