Студопедия

КАТЕГОРИИ:

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

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




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

 

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

Имя Описание
AppendAllLines(sf,s); AppendAllLines(sf,s,cd); Добавляет строки (s) в файл (sf), используя заданную кодировку (cd), а затем закрывает файл. Если файл не существует, он будет создан. Варианты кодировок представлены в таблице 11.6.
AppendAllText(sf,s); AppendAllText(sf,s,cd); Открывает файл (sf), добавляет в него указанную строку (s), используя заданную кодировку (cd), а затем закрывает файл. Если файл не существует, он будет создан. Варианты кодировок представлены в таблице 11.6.
AppendText(sf); Добавляет в существующий файл (sf, объект StreamWriter) текст в кодировке UTF-8.
Copy(sf1,sf2); Copy(sf1,sf2,w); Копирует существующий файл (sf1) в новый файл (sf2) с возможностью перезаписи (w) или без нее. При возможной перезаписи аргумент w равен true, если конечный файл можно перезаписать, в противном случае – false.
Create(sf); Create(sf,bf); Create(sf,bf,opt); Создает новый файл (sf, объект FileStream) для чтения и записи с заданными размером буфера (bf) и значением opt из перечисления System::IO::FileOptions (таблица 11.8), определяющим, как создавать или перезаписывать файл. При этом по умолчанию используются следующие значения перечислений (таблица 11.8): FileMode::Create, FileAccess::ReadWrite и FileShare::None .
CreateText(sf); Создает или открывает файл (sf, объект StreamWriter) для записи текста в кодировке UTF-8.
Delete(sf); Удаляет указанный файл (sf). Если указанный файл не существует, исключение не создается.
Exists(sf); Определяет, существует ли заданный файл (sf).
GetAttributes(sf); Получает атрибуты заданного файла (sf). Атрибуты задаются перечислением FileAttributes (таблица 11.7)
GetCreationTime(sf); Возвращает дату и время создания заданного файла или каталога (sf).
GetLastAccessTime(sf); Возвращает время и дату последнего обращения к указанному файлу или каталогу (sf).
GetLastWriteTime(sf); Возвращает время и дату последней операции записи в указанный файл или каталог (sf).
Move(sf1,sf2); Перемещает заданный файл (sf1) в новое место (sf2) и разрешает его переименование.
Open(sf,md); Open(sf,md,access); Open(sf,md,access,shr); Открывает заданный файл (sf, объект FileStream). Другие аргументы метода определяют: md – режим доступа к файлу (константа из перечисле-ния FileMode, таблица 11.8); access – тип доступа к файлу (константа из перечисле-ния FileAccess, таблица 11.8); shr – тип разрешения доступа к файлу другим процес-сам (константа из перечисления FileShare, таблица 11.8).
OpenRead(sf); Открывает для чтения существующий файл (sf, объект FileStream). При этом по умолчанию используются следующие значения перечислений (таблица 11.8):  FileMode.Open ,  FileAccess.Read  и  FileShare.Read .
OpenText(sf); Открывает для чтения существующий файл (sf, объект StreamWriter), содержащий текст в кодировке UTF-8.
OpenWrite(sf); Открывает для записи существующий файл (sf, объект FileStream). При этом по умолчанию используются следующие значения перечислений (таблица 11.8): FileMode.OpenOrCreate , FileAccess.Write и FileShare.None .
ReadAllBytes(sf); Открывает двоичный файл (sf), считывает содержимое файла в массив байтов, а затем закрывает файл.
ReadAllLines(sf); ReadAllLines(sf,cd); Открывает текстовый файл (sf), считывает все строки файла с заданной кодировкой (cd) в массив строк, а затем закрывает файл. Варианты кодировок представлены в таблице 11.6.
ReadAllText(sf); ReadAllText(sf,cd); Открывает текстовый файл (sf), считывает все строки файла с заданной кодировкой (cd) в строку, а затем закрывает файл. Варианты кодировок представлены в таблице 11.6.
ReadLines(sf); ReadLines(sf,cd); Считывает строки текстового файла (sf) с заданной кодировкой (cd) в коллекцию строк.
Replace(sf1,sf2,sf3); Заменяет содержимым одного файла (sf1) содержимое другого файла (sf2), удаляя исходный файл (sf2) и создавая резервную копию (sf3) замененного файла.
SetAttributes(sf,attr); Устанавливает атрибуты (attr), задаваемые побитовым сочетанием значений перечисления FileAttributes (таблица 11.7), для указанного файла (sf).
SetCreationTime(sf,dt); Устанавливает дату и время (dt) создания заданного файла (sf).
SetLastAccessTime(sf,dt); Устанавливаются дата и время (dt) последнего доступа к заданному файлу (sf).
SetLastWriteTime(sf,dt); Устанавливаются дата и время (dt) последней операции записи в заданный файл (sf).
WriteAllBytes(sf,arB); Создает новый файл (sf), записывает в него указанный массив байтов (arB), а затем закрывает файл. Если такой файл уже существует, он будет перезаписан.
WriteAllLines(sf,arS); WriteAllLines(sf,arS,cd); WriteAllLines(sf,cols); WriteAllLines(sf,cols,cd); Создает новый файл (sf), записывает в него указанный массив (arS) или коллекцию (cols) строк в заданной кодировке (cd), а затем закрывает файл. Если такой файл уже существует, он будет перезаписан. Варианты кодировок представлены в таблице 11.6.
WriteAllText(sf,s); WriteAllText(sf,s,cd); Создает новый файл (sf), записывает в него строку (s) в заданной кодировке (cd), а затем закрывает файл. Если такой файл уже существует, он будет перезаписан. Варианты кодировок представлены в таблице 11.6.

 

 

Таблица 11.6. Кодировки, поддерживаемые платформой .NET Framework
(свойства класса System::Text::Encoding)

Имя Описание
ASCII Получает кодировку для набора символов ASCII (7-разрядных).
BigEndianUnicode Получает кодировку для формата UTF-16 с обратным порядком байтов.
Default Получает кодировку для текущей кодовой страницы ANSI операционной системы.
Unicode Получает кодировку для формата UTF-16 с прямым порядком байтов.
UTF32 Получает кодировку для формата UTF-32 с прямым порядком байтов.
UTF7 Получает кодировку для формата UTF-7.
UTF8 Получает кодировку для формата UTF-8 (используется по умолчанию).

 

Таблица 11.7. Значения (типа Long) перечисленияFlagsAttribute класса System::IO, используемые для задания атрибутов файлов и каталогов

Значение Описание
ReadOnly Файл доступен только для чтения.
Hidden Файл скрытый и поэтому не включается в обычный список каталога.
System Файл является системным. Этот файл является частью операционной системы или используется исключительно операционной системой.
Directory Файл представляет собой каталог.
Archive Файл является архивным. Приложения используют этот атрибут, чтобы пометить файлы для резервного копирования или удаления.
Device Зарезервировано для использования в будущем.
Normal Файл обычный, и другие атрибуты не установлены. Этот атрибут действителен, только если используется отдельно.
Temporary Файл является временным. Файловая система для ускорения доступа будет пытаться держать все данные в памяти, а не сбрасывать их назад в массовую память. Приложение должно стереть временный файл сразу после того, как он станет ненужным.
SparseFile Файл представляет собой разреженный файл. Разреженными файлами обычно являются большие файлы, в которых в основном нулевые данные.
ReparsePoint Файл содержит точку повторной обработки, блокирующую определяемые пользователем данные, связанные с файлом или каталогом.
Compressed Файл является сжатым.
Offline Файл находится в автономном режиме. Данные этого файла недоступны непосредственно.
NotContentIndexed Файл не будет индексироваться службой индексирования содержимого операционной системы.
Encrypted Зашифрованный файл или каталог. Для файла это означает, что все данные в файле зашифрованы, а для каталога – что шифрование производится по умолчанию для вновь создаваемых файлов и каталогов.

 

Таблица 11.8. Значения перечислений FileMode, FileAccess, FileShare, FileOptions
из пространства имен System::IO, используемые различными классами
для настройки поведения файлов при их создании и открытии

Значение Описание
FileMode  
CreateNew Создание нового файла. Если файл уже существует, фиксируется ошибка. Для создания файла требуется разрешение доступа к нему для записи.
Create Создание нового файла. Если файл уже существует, он будет переписан. Если же файл уже существует, но является скрытым, фиксируется ошибка. Для создания файла требуется разрешение доступа к нему для записи.
Open Открытие существующего файла. Если файл не существует, фиксируется ошибка. Возможность открытия файла зависит от значения, задаваемого перечислением FileAccess.
OpenOrCreate Открытие файла, если он существует, в противном случае – создание нового файла. Для открытия или создания файла требуется разрешение соответствующего доступа к нему.
Truncate Открытие существующего файла с усечением его размера до нуля байтов. Попытка выполнить чтение из файла вызывает ошибку. Для открытия файла требуется разрешение доступа к нему для записи.
Append Открытие файла для его дополнения, если он существует, либо создание нового файла. Попытка поиска положения перед концом файла или попытка чтения из файла вызывает ошибку. Значение FileMode.Append можно использовать только вместе с FileAccess.Write.
FileAccess Это перечисление имеет атрибут FlagsAttribute, поддерживающий побитовое соединение составляющих его значений.
Read Доступ только для чтения файла.
Write Доступ только для записи в файл.
ReadWrite Доступ для чтения и записи файла.
FileShare Это перечисление имеет атрибут FlagsAttribute, поддерживающий побитовое соединение составляющих его значений.
None Запрещает совместное использование текущего файла. Любой запрос на открытие файла не выполняется до тех пор, пока файл не будет закрыт.
Read Разрешает последующее открытие файла для чтения. Однако даже при этом для доступа к файлу могут потребоваться дополнительные разрешения.
Write Разрешает последующее открытие файла для записи. Однако даже при этом для доступа к файлу могут потребоваться дополнительные разрешения.
ReadWrite Разрешает последующее открытие файла для чтения или записи. Однако даже при этом для доступа к файлу могут потребоваться дополнительные разрешения.
Delete Разрешает последующее удаление файла.
FileOptions Это перечисление имеет атрибут FlagsAttribute, поддерживающий побитовое соединение составляющих его значений.
None Указывает, что при создании объекта FileStream не должны использоваться дополнительные параметры.
WriteThrough Указывает, что запись в системе должна выполняться через любой промежуточный кэш и проходить напрямую на диск.
Asynchronous Указывает, что файл может использоваться для асинхронного чтения и записи.
RandomAccess Указывается, что доступ к файлу осуществляется произвольно.
DeleteOnClose Указывает, что файл автоматически удаляется после использования.
SequentialScan Указывает, что доступ к файлу осуществляется последовательно от начала к концу.
Encrypted Указывает, что файл является зашифрованным и может быть расшифрован только с использованием той же учетной записи пользователя, которая применялась для шифрования.

 

Пример 11.4. Использование методов Exists, CreateText, AppendText, OpenText, Copy, Delete класса File для создания и открытия текстового файла, записи в него, затем – для добавления в него, далее – для чтения из него, и, наконец, копирования и удаления файла.

 

#include "stdafx.h"

using namespace System;

using namespace System::IO;

int main() {

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

String^ line = "Test";

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

if (!File::Exists(path)) {

  StreamWriter^ sw = File::CreateText(path);

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

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

}

// Открытие файла для дозаписи.

StreamWriter^ sa = File::AppendText(path);

for (int i = 1; i <= 3; i++)

   sa->WriteLine("{0} {1}", line, i); // Запись в файл

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

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

StreamReader^ sr = File::OpenText(path);

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

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

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

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

Console::ReadLine();

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

File::Copy(path, path2);           // Копирование файла

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

                  path, path2);

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

StreamReader^ sr2 = File::OpenText(path2);

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

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

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

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

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

File::Delete(path2);      // Удаление скопированного файла

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

Console::ReadLine();

  return 0;

}

/* Вывод:

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

Hello

Test 1

Test 2

Test 3

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

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

Hello

Test 1

Test 2

Test 3

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

*/

 

 

Пример 11.5. Использование методов Exists, WriteAllText, AppendAllText, ReadAllText класса File для создания файла (в случае его отсутствия) и записи в него текста, затем для добавления дополнительного текст в этот файл, и далее для чтения текста из него. При этом в каждом случае перед началом операции файл открывается, а после нее закрывается.

 

#include "stdafx.h"

using namespace System;

using namespace System::IO;

int main() {

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

String^ st = "Hello and Welcome\r\n";

// Однократная запись текста в файл.

if (!File::Exists(path))

  File::WriteAllText(path, st);

                    // Создание файла и запись текста в него.

// Многократное добавление текста в файл.

st = "Дополнительный текст\r\n";

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

File::AppendAllText(path, st);

// Открытие файла и чтение текста из него.

st = File::ReadAllText(path);

Console::WriteLine(st); // Вывод считанного текста на экран.

Console::ReadLine();

  return 0;

}

/* Вывод:

Hello and Welcome

Дополнительный текст

*/

 

Пример 11.6. Использование методов Exists, WriteAllLines, AppendAllText, ReadAllLines класса File для создания файла (в случае его отсутствия) и записи в него массива строк, затем для добавления дополнительного текст в этот файл, и далее для чтения строк из него. При этом в каждом случае перед началом операции файл открывается, а после нее закрывается.

 

#include "stdafx.h"

using namespace System;

using namespace System::IO;

int main() {

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

 array<String^>^ st = { "Hello", "and", "Welcome" };

// Однократная запись текста в файл.

if (!File::Exists(path))

  File::WriteAllLines(path, st);

                       // Создание файла и запись строк в него.

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

String^ AppSt = "Дополнительный текст\r\n";

File::AppendAllText(path, AppSt);

// Открытие файла и чтение строк из него.

st = File::ReadAllLines(path);

for each (String^ s in st)

  Console::WriteLine(s); // Вывод считанного текста на экран.

Console::ReadLine();

  return 0;

}

/* Вывод:

Hello

 and

 Welcome

Дополнительный текст

*/

 

Пример 11.7. Использование методов Exists, Create, GetAttributes, SetAttributes класса File для создания файла (в случае его отсутствия), а затем определения и установки атрибута этого файла (последовательные установка и снятие атрибута Hidden при каждом запуске).

 

#include "stdafx.h"

using namespace System;

using namespace System::IO;

int main() {

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

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

if (!File::Exists(path)) {

  File::Create(path);

  Console::WriteLine("Создан файл {0} .", path);

}

if ((File::GetAttributes(path) & FileAttributes::Hidden) ==

   FileAttributes::Hidden) {        // Если файл скрытый

  // Сделать файл нескрытым

  File::SetAttributes(path, File::GetAttributes(path) &

        ~FileAttributes::Hidden);   // Снять атрибут

  Console::WriteLine("Файл {0} больше не скрытый.", path);

}

else {

  // Сделать файл скрытым

  File::SetAttributes(path, File::GetAttributes(path) |

        FileAttributes::Hidden);    // Установить атрибут

  Console::WriteLine("Файл {0} стал скрытым.", path);

 }

Console::ReadLine();

  return 0;

}

/* Вывод:

Создан файл c:\temp\Test.txt .

Файл c:\temp\Test.txt стал скрытым.




Или

Файл c:\temp\Test.txt больше не скрытый.

*/

 

Пример 11.8. Использование методов Exists, CreateText, GetCreationTime, GetLastWriteTime, GetLastAccessTime, GetAttributes класса File для создания файла (в случае его отсутствия), а затем установки и определения свойств этого файла.

 

#include "stdafx.h"

using namespace System;

using namespace System::IO;

int main() {

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

if (!File::Exists(path)) {

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

  StreamWriter^ sw = File::CreateText(path);

  sw->Close();

  Console::WriteLine("Создан файл {0} .", path);

}

// Изменение времени создания файла.

File::SetCreationTime(path, DateTime(2010,3,30));

// Изменение времени последней записи в файл.

File::SetLastWriteTime(path, DateTime(2010,4,29));

// Изменение времени последнего доступа к файлу.

File::SetLastAccessTime(path, DateTime(2010,5,14));

Console::WriteLine("Свойства файла изменены.");

// Получение времени создания файла.

DateTime dt = File::GetCreationTime(path);

Console::WriteLine("Время создания файла {0}.", dt);

// Получение времени последней записи в файл.

dt = File::GetLastWriteTime(path);

Console::WriteLine("Время последней записи в файл {0}.", dt);

// Получение времени последнего доступа к файлу.

dt = File::GetLastAccessTime(path);

Console::WriteLine("Время последнего доступа к файлу {0}.", dt);

// Обновление времени создания файла.

File::SetCreationTime(path, DateTime::Now);

// Обновление времени последней записи в файл.

File::SetLastWriteTime(path, DateTime::Now);

// Обновление времени последнего доступа к файлу.

File::SetLastAccessTime(path, DateTime::Now);

Console::WriteLine("Свойства файла обновлены.");

// Получение времени создания файла.

dt = File::GetCreationTime(path);

Console::WriteLine("Время создания файла {0}.", dt);

// Получение времени последней записи в файл.

dt = File::GetLastWriteTime(path);

Console::WriteLine("Время последней записи в файл {0}.", dt);

// Получение времени последнего доступа к файлу.

dt = File::GetLastAccessTime(path);

Console::WriteLine("Время последнего доступа к файлу {0}.", dt);

Console::ReadLine();

  return 0;

}

/* Вывод:

Создан файл c:\temp\Test.txt .

Свойства файла изменены.

Время создания файла 30.03.2010 0:00:00.

Время последней записи в файл 29.04.2010 0:00:00.

Время последнего доступа к файлу 14.05.2010 0:00:00.

Свойства файла обновлены.

Время создания файла 22.09.2012 10:42:36.

Время последней записи в файл 22.09.2012 10:42:36.

Время последнего доступа к файлу 22.09.2012 10:42:36.

*/

 

 










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

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