Пример преобразования чисел, содержащихся в текстовом файле
В данном примере вычисляется сумма чисел в каждой строке.
На содержимое файла накладываются весьма строгие ограничения: числа должны быть разделены ровно одним пробелом, после последнего числа в строке пробела быть не должно, файл не должен заканчиваться символом перевода строки.
using System;
using System.IO;
namespace ConsoleApplication1
{ class Class1
{ static void Main()
{
try
{
StreamReader f=new StreamReader ("numbers.txt");
string s;
const int n= 20;
int []a=new int[n];
string [] buf;
while((s=f.ReadLine()) != null)
{
buf = s.Split(' ');
long sum=0;
for (int i=0; i<buf.Length; ++i)
{
a[i]=Convert.ToInt32(buf[i]);
sum+=a[i];
}
Console.WriteLine("{0} сумма: {1}", s, sum);
Console.ReadKey();
}
f.Close();
}
catch (FileNotFoundException e)
{ Console.WriteLine(e.Message);
Console.WriteLine("Проверьте правильность имени файла!");
Console.ReadKey();
return; }
catch (Exception e)
{ Console.WriteLine("Error:" + e.Message);
Console.ReadKey();
return; } } }}
Результат работы программы: 1 2 4 сумма: 7 3 44 -3 6 сумма: 50 8 1 1 сумма: 10
Двоичные файлы
Двоичные файлы хранят данные в том же виде, в котором они представлены в оперативной памяти, то есть во внутренней форме представления. Двоичные файлы применяются не для просмотра их человеком, а для использования в программах. Выходной поток BinaryWriter поддерживает произвольный доступ, то есть имеется возможность выполнять запись в произвольную позицию двоичного файла.
Двоичный файл открывается на основе базового потока, в качестве которого чаще всего используется поток FileStream. Входной двоичный поток содержит перегруженные методы чтения для всех простых встроенных типов данных.
Основные методы двоичных потоков приведены в таблицах 11.7 и 11.8
Таблица 11.7 – Основные элементы класса BinaryWriter
BaseStream Базовый поток, с которым работает объект BinaryWriter
Close Закрыть поток
Flush Очистить буфер
Seek Установить позицию в текущем потоке
Write Записать значение вы текущий поток
Таблица 11.8 -Наиболее важные элементы класса BinaryReader
BaseStream Базовый поток, с которым работает BinaryReader
Close Закрытый поток
PeekChar Возвратить следующий символ без перемещения
внутреннего указателя в потоке
Read Считать поток байтов или символов и сохранить в
массиве,
передаваемом как входной параметр
ReadXXXX Считать из потока данные определенного типа(например, ReadBoolean, ReadByte, ReadInt32)
В приведенном ниже примере формируется двоичный файл. В него записывается последовательность вещественных чисел, а затем для демонстрации произвольного доступа третье число заменяется числом 8888.