Студопедия

КАТЕГОРИИ:

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

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




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

 

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

Имя Описание
Поля  
FullPath Представляет полный путь к каталогу или файлу.
OriginalPath Первоначально заданный пользователем относительный или абсолютный путь.
  Свойства  
Attributes Получает или задает атрибуты для текущего файла или каталога. Значение этого свойства представляет сочетание флагов атрибутов файла (из перечисления FileAttributes, таблица 11.7).
CreationTime Получает или задает время создания текущего файла или каталога.
Directory Получает экземпляр родительского каталога файла.
DirectoryName Получает строку, представляющую полный путь к каталогу.
Exists Получает значение (типа bool), показывающее, существует ли файл (true) или нет (false).
Extension Получает строку, содержащую расширение файла.
FullName Получает строку, содержащую полный путь к каталогу или файлу.
IsReadOnly Возвращает или задает значение (типа bool), определяющее, является ли текущий файл доступным только для чтения (true) или нет (false).
LastAccessTime Получает или задает время последнего доступа к текущему файлу или каталогу.
LastWriteTime Получает или задает время последней операции записи в текущий файл или каталог.
Length Получает размер текущего файла в байтах.
Name Получает строку, содержащую имя и расширение файла.
  Методы  
AppendText(sf); Добавляет в существующий файл (sf, объект StreamWriter) текст в кодировке UTF-8.
CopyTo(sf2); CopyTo(sf2,w); Копирует существующий текущий файл (sf1) в новый файл (sf2) с возможностью перезаписи (w) или без нее. При возможной перезаписи аргумент w равен true, если конечный файл можно перезаписать, в противном случае – false.
Create(); Создает новый файл (объект FileStream). При этом по умолча-нию используются следующие значения перечислений (таблица 11.8): FileMode.Create, FileAccess.ReadWrite и FileShare.None .
CreateText(); Создает файл (объект StreamWriter) для записи текста в кодировке UTF-8.
Delete(); Удаляет файл без возможности восстановления. Если указанный файл не существует, исключение не создается.
MoveTo(sf2); Перемещает заданный текущий файл в новое место (sf2) и разрешает его переименование.
Open(md); Open(md,access); Open(md,access,shr); Открывает файл (объект FileStream). Аргументы определяют: md – режим доступа к файлу (перечисление FileMode, таблица 11.8); access – тип доступа к файлу (перечисление FileAccess, таблица 11.8); shr – тип разрешения доступа к файлу другим процессам (перечисление FileShare, таблица 11.8).
OpenRead(); Открывает для чтения существующий файл (объект FileStream). При этом по умолчанию используются следующие значения перечислений (таблица 11.8): FileMode.Open , FileAccess.Read и  FileShare.Read .
OpenText(); Открывает для чтения существующий файл (объект StreamWriter), содержащий текст в кодировке UTF-8.
OpenWrite(); Открывает для записи существующий файл (объект FileStream) или создает новый. При этом по умолчанию используются следующие значения перечислений (таблица 11.8): FileMode.OpenOrCreate , FileAccess.Write и FileShare.None .
Refresh(); Обновляет состояние объекта. Этот метод рекомендуется вызывать перед попыткой получения сведений об атрибутах, иначе сведения могут оказаться устаревшими.
Replace(sf1,sf2); Заменяет содержимое одного файла (sf1) содержимым текущего файла, удаляя исходный файл (sf1) и создавая резервную копию (sf2) замененного файла.
ToString(); Возвращает строку, содержащую путь.

 

Пример 11.11. Использование методов Exists, CreateText, OpenText, CopyTo, Delete класса FileInfo для создания и открытия текстового файла, записи в него, затем для чтения из него, и, наконец, копирования и удаления файла.

 

#include "stdafx.h"

using namespace System;

using namespace System::IO;

int main() {

String^ path = "c:\\temp\\Test.txt";

FileInfo^ fi1 = gcnew FileInfo(path);

// Создание файла для записи, если он не существовал.

if (!fi1->Exists) {

  StreamWriter^ sw = fi1->CreateText();

  sw->WriteLine("Hello");        // Запись

  sw->WriteLine("and");          // строк

  sw->WriteLine("Welcome");      // в файл.

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

}

// Открытие файла для чтения.

StreamReader^ sr = fi1->OpenText();

String^ line = "";

Console::WriteLine("Файл {0} содержит:", path);

while (line = sr->ReadLine())     // Чтение строк из файла

     Console::WriteLine(line);   // Вывод считанных строк

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

Console::ReadLine();

String^ path2 = "c:\\temp\\Test2.txt";

FileInfo^ fi2 = gcnew FileInfo(path2);

fi1->CopyTo(path2);               // Копирование файла

Console::WriteLine("Файл {0} был скопирован в {1} .",

                  path, path2);

// Открытие нового файла для чтения.

StreamReader^ sr2 = fi2->OpenText();

Console::WriteLine("Файл {0} содержит:", path2);

// Чтение строк из скопированного файла и вывод их на экран

while (line = sr2->ReadLine())

     Console::WriteLine(line);

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

Console::ReadLine();

fi2->Delete();            // Удаление скопированного файла

Console::WriteLine("Файл {0} был успешно удален.", path2);

Console::ReadLine();

  return 0;

}

/* Вывод:

Файл c:\temp\Test.txt содержит:

Hello

and

Welcome

Файл c:\temp\Test.txt был скопирован в c:\temp\Test.txt .

Файл c:\temp\Test2.txt содержит:

Hello

and

Welcome

Файл c:\temp\Test2.txt был успешно удален.

*/

 

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

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

 

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

Имя Описание
Поля  
FullPath Представляет полный путь к каталогу или файлу.
OriginalPath Первоначально заданный пользователем относительный или абсолютный путь.
Свойства  
Attributes Получает или задает атрибуты для текущего файла или каталога. Значение этого свойства представляет сочетание флагов атрибутов файла (из перечисления FileAttributes, таблица 11.6).
CreationTime Получает или задает время создания текущего файла или каталога.
Exists Получает значение (типа bool), показывающее, существует ли файл (true) или нет (false).
Extension Получает строку, содержащую расширение файла.
FullName Получает строку, содержащую полный путь к каталогу или файлу.
LastAccessTime Получает или задает время последнего доступа к текущему файлу или каталогу.
LastWriteTime Получает или задает время последней операции записи в текущий файл или каталог.
Name Получает строку, содержащую имя текущего каталога (объекта DirectoryInfo).
Parent Получает родительский каталог заданного подкаталога.
Root Получает корневой элемент пути.
  Методы  
Create(); Создает новый каталог.
CreateSubdirectory(sd); Создает один или несколько подкаталогов по заданному пути (sd, до 248 символов). Путь может быть задан относительно текущего объекта DirectoryInfo.
Delete(); Delete(c); Удаляет каталог (текущий DirectoryInfo), если он пуст, или со всем содержимым (c = true).
EnumerateDirectories(); EnumerateDirectories(tp); EnumerateDirectories (tp,op); Возвращает перечисляемую коллекцию сведений о каталогах в текущем каталоге, соответствующих указанному шаблону поиска (tp). Возможно, поиск ведется также и в подкаталогах (op): TopDirectoryOnly – поиск только в текущем каталоге (по умолчанию); AllDirectories – поиск в текущем каталоге и во всех подкаталогах.
EnumerateFiles(); EnumerateFiles(tp); EnumerateFiles(tp,op); Возвращает перечисляемую коллекцию сведений о файлах в текущем каталоге, соответствующих шаблону поиска (tp). Возможно, поиск ведется также и в подкаталогах (op): TopDirectoryOnly – поиск только в текущем каталоге (по умолчанию); AllDirectories – поиск в текущем каталоге и во всех подкаталогах.
EnumerateFileSystemInfos(); EnumerateFileSystemInfos (tp); EnumerateFileSystemInfos (tp,op); Возвращает перечисляемую коллекцию сведений о файлах и каталогах в текущем каталоге, соответствующих указанному шаблону поиска. Возможно, поиск ведется также и в подкаталогах (op): TopDirectoryOnly – поиск только в текущем каталоге (по умолчанию); AllDirectories – поиск в текущем каталоге и во всех подкаталогах.
GetDirectories(); GetDirectories(tp); GetDirectories(tp,op); Возвращает массив каталогов (объектов DirectoryInfo) в текущем каталоге, соответствующих шаблону поиска (tp), с возможностью поиска и в подкаталогах (op): TopDirectoryOnly – поиск только в текущем каталоге (по умолчанию); AllDirectories – поиск в текущем каталоге и во всех подкаталогах.
GetFiles(); GetFiles(tp); GetFiles(tp,op); Возвращает массив файлов (объектов FileInfo) в текущем каталоге, соответствующих шаблону поиска (tp), с возможностью поиска и в подкаталогах (op): TopDirectoryOnly – поиск только в текущем каталоге (по умолчанию); AllDirectories – поиск в текущем каталоге и во всех подкаталогах.
GetFileSystemInfos(); GetFileSystemInfos(tp); GetFileSystemInfos(tp,op); Возвращает массив файлов и каталогов (объектов FileSystemInfo) в текущем каталоге, соответствующих шаблону поиска (tp) с возможностью поиска и в подкаталогах (op): TopDirectoryOnly – поиск только в текущем каталоге (по умолчанию); AllDirectories – поиск в текущем каталоге и во всех подкаталогах.
MoveTo(sd2); Перемещает текущий каталог (объект DirectoryInfo) и его содержимое в новое место  (sd2).
Refresh(); Обновляет состояние объекта. Этот метод рекомендуется вызывать перед попыткой получения сведений об атрибутах, иначе сведения могут оказаться устаревшими.
ToString(); Возвращает строку, содержащую исходный путь, переданный пользователем.

 

Пример 11.12. Использование свойств Exists, Name и методов Create, CreateSubdirectory, GetDirectories, GetFiles, MoveTo, Delete класса DirectoryInfo для определения факта существования папок, создания, перемещения и удаления папок, а также вывода содержимого папки и подсчет папок и файлов в ней.

 

#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";

// Объявление папок (объектов DirectoryInfo) для управления.

DirectoryInfo^ cd = gcnew DirectoryInfo(currentDir);

DirectoryInfo^ sd = gcnew DirectoryInfo(sourceDir);

DirectoryInfo^ dd = gcnew DirectoryInfo(destDir);

DirectoryInfo^ md = gcnew DirectoryInfo(moveDir);

if (cd->Exists) {     // Если заданная папка существует...

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

  sd->Create();                               // Создание

  DirectoryInfo^ sdd = sd->CreateSubdirectory("Dir"); // новых

  dd->Create();                                     // папок

  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);

  array<DirectoryInfo^>^ sdArr = sd->GetDirectories();

for each (DirectoryInfo^ fName in sdArr)

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

array<FileInfo^>^ sfArr = sd->GetFiles();

for each (FileInfo^ fName in sfArr)

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

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

        sd->GetDirectories()->Length, sd->GetFiles()->Length);

Console::ReadLine();

if (sd->Exists & dd->Exists & !md->Exists) {

    sd->MoveTo(moveDir);           // Перемещение папки

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

                     sourceDir, moveDir);

}

Console::ReadLine();

if (dd->Exists) {                 // Если папка существует

  dd->Delete(true);              // Удаление папки

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

                     destDir);

}

Console::ReadLine();

  return 0;

}

/* Вывод:

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

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

   Dir      <папка>

  Test1.txt

  Test2.txt

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

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

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

*/

 

 










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

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