Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Использование класса System::IO::Directory для работы с папками




(http://msdn.microsoft.com/ru-ru/library/system.io.directory.aspx)

 

Таблица 11.9. Основные методы класса Directory из пространства имен System::IO

Метод Описание
CreateDirectory(sd); Создает все каталоги и подкаталоги по заданному пути (sd).
Delete(sd); Delete(sd,c); Удаляет заданный каталог (sd): пустой или со всем содержимым (c = true).
EnumerateDirectories(sd); EnumerateDirectories (sd,tp); EnumerateDirectories (sd,tp,op); Возвращает перечисляемую коллекцию имен каталогов, соответствующих шаблону поиска (tp) по указанному пути (sd). Возможно, поиск ведется также и в подкаталогах (op): TopDirectoryOnly – поиск только в текущем каталоге (по умолчанию); AllDirectories – поиск в текущем каталоге и во всех подкаталогах.
EnumerateFiles(sd); EnumerateFiles(sd,tp); EnumerateFiles(sd,tp,op); Возвращает перечисляемую коллекцию имен файлов, соответствующих шаблону поиска (tp) по указанному пути (sd). Возможно, поиск ведется также и в подкаталогах (op): TopDirectoryOnly – поиск только в текущем каталоге (по умолчанию); AllDirectories – поиск в текущем каталоге и во всех подкаталогах.
EnumerateFileSystemEntries (sd); EnumerateFileSystemEntries (sd,tp); EnumerateFileSystemEntries (sd,tp,op); Возвращает перечисляемую коллекцию имен файлов и каталогов, соответствующих шаблону поиска (tp) по указанному пути (sd). Возможно, поиск ведется также и в подкаталогах (op): TopDirectoryOnly – поиск только в текущем каталоге (по умолчанию); AllDirectories – поиск в текущем каталоге и во всех подкаталогах.
Exists(sd); Определяет, существует ли заданный каталог (sd).
GetCreationTime(sd); Получает дату и время создания каталога (sd).
GetCurrentDirectory(); Получает текущий рабочий каталог приложения.
GetDirectories(sd); GetDirectories(sd,tp); GetDirectories(sd,tp,op); Получает коллекцию имен подкаталогов (включая их пути), соответствующих шаблону поиска (tp) в указанном каталоге (sd), а при необходимости и в подкаталогах (op): TopDirectoryOnly – поиск только в текущем каталоге (по умолчанию); AllDirectories – поиск в текущем каталоге и во всех подкаталогах.
GetDirectoryRoot(sd); Возвращает для заданного пути сведения о томе и корневом каталоге по отдельности или сразу.
GetFiles(sd); GetFiles(sd,tp); GetFiles(sd,tp,op); Возвращает коллекцию имен файлов (включая их пути), соответствующих шаблону поиска (tp) в указанном ка-талоге (sd), а при необходимости и в подкаталогах (op): TopDirectoryOnly – поиск только в текущем каталоге (по умолчанию); AllDirectories – поиск в текущем каталоге и во всех подкаталогах.
GetFileSystemEntries(sd); GetFileSystemEntries (sd,tp); GetFileSystemEntries (sd,tp,op); Возвращает коллекцию имен файлов и каталогов (включая их пути), соответствующих шаблону поиска (tp) в указанном каталоге (sd), а при необходимости и в подкаталогах (op): TopDirectoryOnly – поиск только в текущем каталоге (по умолчанию); AllDirectories – поиск в текущем каталоге и во всех подкаталогах.
GetLastAccessTime(sd); Возвращает время и дату последнего обращения к указанному файлу или каталогу (sd).
GetLastWriteTime(sd); Возвращает время и дату последней операции записи в указанный файл или каталог (sd).
GetLogicalDrives(); Извлекает имена логических устройств данного компьютера в формате "<имя устройства>:\".
GetParent(sd); Извлекает родительский каталог, на который указывает абсолютный или относительный путь (sd).
Move(sd1,sd2); Перемещает файл или все содержимое каталога (sd1) в новое местоположение (sd2).
SetCreationTime(sd,dt); Устанавливает дату и время (dt) создания заданного файла или каталога (sd).
SetCurrentDirectory(sd); Устанавливает заданный каталог (sd) в качестве текущего рабочего каталога приложения.
SetLastAccessTime(sd,dt); Устанавливает время и дату (dt) последнего обращения к заданному файлу или каталогу (sd).
SetLastWriteTime(sd,dt); Устанавливает дату и время (dt) последней записи в файл или каталог (sd).

 

Пример 11.9. Использование методов Exists, CreateDirectory, GetDirectories, GetFiles, Move, Delete класса Directory для определения факта существования папок, создания, переме-щения и удаления папок, а также вывода содержимого папки и подсчет папок и файлов в ней.

 

#include "stdafx.h"

using namespace System;

using namespace System::IO;

int main() {

  String^ currentDir = "c:\\temp";

String^ sourceDir = currentDir + "\\Source";

String^ destDir = currentDir + "\\Destination";

String^ moveDir = destDir + "\\Source";

if (Directory::Exists(currentDir)) { // Если папка существует

    // Создание папок и файлов

  Directory::CreateDirectory(sourceDir);       // Созание

  Directory::CreateDirectory(sourceDir + "\\Dir");  // новых

  Directory::CreateDirectory(destDir);         // папок

    StreamWriter^ f1 = File::CreateText(sourceDir +

                     "\\Test1.txt");        // Созание файла

  f1->WriteLine("Test 1");             // Запись в файл

  f1->Close();                         // Закрытие файла

  StreamWriter^ f2 = File::CreateText(sourceDir +

                        "\\Test2.txt");        // Созание файла

  f2->WriteLine("Test 2");             // Запись в файл

  f2->Close();                         // Закрытие файла

  Console::WriteLine("Папки и файлы созданы.");

}

Console::ReadLine();

// Вывод содержимого папки и подсчет папок и файлов в ней

Console::WriteLine("Содержимое папки {0} :", sourceDir);

for each (String^ fName in Directory::GetDirectories(sourceDir))

        Console::WriteLine(" {0}\t\t<папка>", fName);

for each (String^ fName in Directory::GetFiles(sourceDir))

        Console::WriteLine(" {0}", fName);

Console::WriteLine("Итого: {0} папок и {1} файлов.",

                 Directory::GetDirectories(sourceDir)->Length,

                 Directory::GetFiles(sourceDir)->Length);

Console::ReadLine();

if (Directory::Exists(sourceDir) & Directory::Exists(destDir) &

   !Directory::Exists(moveDir)) {

  Directory::Move(sourceDir, moveDir);   // Перемещение папки

  Console::WriteLine("Папка {0} перемещена в {1} .",

                     sourceDir, moveDir);

}

Console::ReadLine();

if (Directory::Exists(destDir)) { // Если папка существует

  Directory::Delete(destDir, true);   // Удаление папки

  Console::WriteLine("Папка {0} со всем содержимым удалена.",

                     destDir);

}

Console::ReadLine();

  return 0;

}

/* Вывод:

Папки и файлы созданы.

Содержимое папки c:\temp\Source :

   c:\temp\Source\Dir      <папка>

  c:\temp\Source\Test1.txt

   c:\temp\Source\Test2.txt

Итого: 1 папок и 2 файлов.

Папка c:\temp\Source перемещена в c:\temp\Destination\Source .

Папка c:\temp\Destination со всем содержимым удалена.

*/

 

11.5. Использование класса System::IO::Path
для работы со строкой пути к папке или файлу

(http://msdn.microsoft.com/ru-ru/library/system.io.path.aspx)

 

Таблица 11.10. Основные поля и методы класса Path из пространства имен System::IO

Имя Описание
Поля  
AltDirectorySeparatorChar Возвращает дополнительный символ, задавае-мый платформой, для разделения уровней каталогов в строке пути, в которой отражена иерархическая организация файловой системы. В операционной системе Windows значением этого поля является знак косой черты (/).
DirectorySeparatorChar Возвращает символ, задаваемый платформой, для разделения уровней папок в строке пути, в которой отражена иерархическая организация файловой системы. В операционной системе Windows значением этого поля является знак обратной косой черты (\).
PathSeparator Возвращает разделитель, задаваемый платфор-мой, который используется в переменных среды для разделения строк пути. В операционной системе Windows значением этого поля является знак точки с запятой (;).
VolumeSeparatorChar Возвращает разделитель томов, задаваемый платформой. В операционной системе Windows значением поля является знак двоеточия (:).
  Методы  
ChangeExtension(path,ext); Изменяет расширение (ext) в строке пути (path).
Combine(sp1,sp2); Combine(sp1,sp2,sp3); Combine(sp1,sp2,sp3,sp4); Combine(sPath); Объединяет несколько строк (sp1-sp4) или массив строк (sPath) в строку пути.
GetDirectoryName(sp); Возвращает для указанной строки пути (sp) имя каталога или значение null, если путь указывает на корневой каталог или пуст.
GetExtension(sp); Возвращает расширение файла в указанной строке пути (sp).
GetFileName(sp); Возвращает имя файла и его расширение для указанной строки пути (sp).
GetFileNameWithoutExtension(sp); Возвращает имя файла без расширения для указанной строки пути (sp).
GetFullPath(sp); Возвращает для указанной строки пути (sp) абсолютный путь.
GetInvalidFileNameChars(); Возвращает массив, содержащий символы, которые не разрешены в именах файлов.
GetInvalidPathChars(); Возвращает массив, содержащий символы, которые не разрешены в строке пути.
GetPathRoot(sp); Возвращает для указанного пути (sp) сведения о корневом каталоге.
GetRandomFileName(); Возвращает произвольное имя каталога или файла.
GetTempFileName(); Создает на диске временный пустой файл с уникальным именем и возвращает полный путь для этого файла.
GetTempPath(); Возвращает путь к временной папке текущего пользователя, заканчивающийся обратной косой чертой (\).
HasExtension(sp); Определяет, включает ли строка пути (sp) расширение имени файла.
IsPathRooted(sp); Определяет, содержит ли строка пути (sp) корень. Значение true возвращается, если первый символ строки пути является разделителем каталога (например, "\") или если путь начинается с буквы диска и двоеточия (:).

 

Пример 11.10. Использование методов класса Path для получения информации о строке пути к папке или файлу.

 

#include "stdafx.h"

using namespace System;

using namespace System::IO;

int main() {

  String^ path1 = "c:\\temp\\MyTest.txt";

String^ path2 = "c:\\temp\\MyTest";

String^ path3 = "temp";

String^ result;

result = Path::ChangeExtension(path1, ".dat");

Console::WriteLine("В пути '{0}' расширение изменено на '{1}'.",

                  path1, result);

Console::WriteLine("Файл '{0}' находится в папке '{1}'.",

    Path::GetFileName(path1), Path::GetDirectoryName(path1));

if (Path::HasExtension(path1))

  Console::WriteLine("{0} имеет расширение.", path1);

if (!Path::HasExtension(path2))

  Console::WriteLine("{0} не имеет расширения.", path2);

if (!Path::IsPathRooted(path3))

  Console::WriteLine("Строка {0} не содержит информации o " +

                     "корне.", path3);

Console::WriteLine("Полный путь к {0} - {1}.", path3,

                  Path::GetFullPath(path3));

Console::WriteLine("{0} - местоположение временных файлов.",

                  Path::GetTempPath());

Console::WriteLine("Файл {0} доступен для использования.",

                  Path::GetTempFileName());

Console::ReadLine();

  return 0;

}

/* Вывод:

В пути 'c:\temp\MyTest.txt' расширение изменено на

 'c:\temp\MyTest.dat'.

Файл 'MyTest.txt' находится в папке 'c:\temp'.

   c:\temp\MyTest.txt имеет расширение.

   c:\temp\MyTest не имеет расширения.

   Строка temp не содержит информации о корне.

   Полный путь к temp - C:\Documents and Settings\Guest\Local

Settings\Application Data\Temporary Projects\ConsoleApplication1

\bin\Debug\temp.

C:\Documents and Settings\Guest\Local Settings\Temp\ -

местоположение временных файлов.

Файл C:\Documents and Settings\Guest\Local Settings\Temp\

tmp3D.tmp доступен для использования.

*/

 

 










Последнее изменение этой страницы: 2018-05-10; просмотров: 185.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...