w.Close ();
}
else {
BinaryReader r = new BinaryReader(fs);
for (int i = 0; i < 10; i++)
Console.WriteLine(r.ReadInt16());
r.Close();
}
fs.Close();
}
TextReader И TextWriter
В абстрактных классах TextReader и TextWriter данные рассматриваются как последовательный поток символов (то есть, просто как текст). TextReader имеет следующие методы: Close, Peek (Считывание элемента данных), Read, ReadBlock, ReadLine и ReadToEnd. TextWriter содержит методы типа Close, Flush, Write и WriteLine. Перегруженные методы Read читают символы из потока.
StringReader и StringWriter являются производными классами от классов TextReader и TextWriter соответственно. StringReader и StringWriter читают и записывают данные в символьную строку, которая сохраняется в базовом объекте StringBuilder. Конструктор StringWriter может принимать объект StringBuilder.
StreamReader и StreamWriter также являются производными классами от классов TextReader и TextWriter. Они читают текст из объекта и записывают текст в объект Stream. Так же как и в случае классов BinaryReader и BinaryWriter, можно создать объект Stream и передать его в конструктор StreamReader или StreamWriter. Следовательно, эти классы могут использовать любые унаследованные от Stream классы хранения данных.
|
|
// Программа 3. Запись и чтение символьных строк в/из файла. Программу необходимо выполнить дважды: первый раз — чтобы создать файл, а затем второй раз — чтобы прочитать его.
void Main() {
FileStream fs = new FileStream("TextTest.txt", FileMode.OpenOrCreate);
if (fs.Length == 0) {
Console.WriteLine("Writing Data..."); // Запись данных
StreamWriter sw = new StreamWriter(fs);
Sw.Write(100); // Запись
sw.WriteLine(" One Hundred"); // Сто
sw.WriteLine("End of File"); // Конец Файла
sw.Close();
}
else {
String text; // Строка
StreamReader sr = new StreamReader(fs);
text = sr.ReadLine(); // текст
while (text!= null) {
Console.WriteLine(text);
text = sr.ReadLine();
}
sr.Close ();
}
fs.Close ();
}
Класс File
Класс File содержит методы для создания и открытия файлов, которые возвращают объекты FileStream, StreamWriter или StreamReader, производящие фактическое чтение и запись. Перегруженный метод Create возвращает объект FileStream. Метод CreateText возвращает StreamWriter. Перегруженный метод Open в зависимости от передаваемых параметров может создавать новый файл или открывать существующий для чтения или записи. Возвращаемый объект — объект FileStream. Метод OpenText возвращает StreamReader. Метод OpenRead возвращает объект FileStream. Метод OpenWrite возвращает объект типа FileStream.
Класс File содержит также методы копирования, удаления и перемещения файлов. К тому же, мы можем проверить существование файла. Нижеперечисленные атрибуты файла можно прочитать и изменить:
· время создания;
· время последнего обращения;
· последнее время записи;
· архивный, скрытый, обычный, системный или временный;
· сжатый, зашифрованный;
· только для чтения;
· файл — это каталог?
// Программа 4. Пример использование методов класса File и FileInfo.
|
|
void Main() {
File.Delete("file2.txt"); // Удалить файл "file2.txt"
StreamWriter sw = System.IO.File.CreateText("file.txt");
sw.Write ("Пусть каждый день твой будет светлым, ");
sw.WriteLine("приятным, радостным и щедрым!");
sw.Write("Пусть будет ярким, динамичным,");
sw.WriteLine("во всем удачным и отличным!");
sw.Close();
File.Move("file.txt", "file2.txt");
FileInfo fileInfo = new FileInfo("file2.txt");
Console.WriteLine("File {0} is {1} bytes in length, created on {2}",
fileInfo.FullName,fileInfo.Length, fileInfo.CreationTime);
Console.WriteLine("");
StreamReader sr = fileInfo.OpenText();
String s = sr.ReadLine();
while (s!= null) {
Console.WriteLine(s);
s = sr.ReadLine();
}
sr.Close();
Console.WriteLine("");
}