Программирование >>  Автоматически обновляемые приложения 

1 ... 113 114 115 [ 116 ] 117 118 119 ... 170


namespace XMLTextReaderDemo {

public partial class Forml : Form {

public Forml() {

InitiaiizeComponent();

XmlTextReader reader = new XmlTextReader( bhvbooks.xml );

while (reader.Read 0)

switch (reader.NodeType) {

case XmlNodeType.Element: Узел является элементом. listBoxl.Items.Add( < + reader.Name);

while (reader.MoveToNextAttribute()) Чтение атрибутов.

listBoxl.Items.Add( + reader.Name + = + reader.Value + ); listBoxl.Items.Add( > ); break; case XmlNodeType.Text:

Вывести текст в каждом элементе. listBoxl.Items.Add(reader.Value); break;

case XmlNodeType.EndElement: Вывести конец элемента.

listBoxl.Items.Add( </ + reader.Name + > ); break;

Примечание

Пример находится в папке XMLTextReaderDemo на прилагаемом диске.

using System.Windows.Forms; using System.Xml;



Листинг 10.42. Сравнение дшук файлов

using System.10;

Метод для сравнения файлов

В качестве параметров используются две строки,

содержащие полные пути к сравниваемым файлам.

Возвращается не О, если содержимое файлов одинаково.

Если содержимое файлов не одинаково, то возвращается 0.

private bool FileCompare(string filel, string file2)

int filelbyte; int file2byte; FileStream fsl; FileStream fs2;

Если пути файлов совпадают if (filel == file2)

Сравнение двух файлов

Если вам необходимо сравнить содержимое двух файлов, то придется сравнивать байт за байтом оба файла. И опять нам на помощь придет статья How to create а File-Compare function in Visual C# из Базы Знаний Microsoft, которую можно найти по адресу http: support.microsoft.com/kb/320348/. Обратите внимание, что мы будем сравнивать именно содержимое файлов, а не их имена, даты создания и другие атрибуты. Кстати, существует такая утилита командной строки fc.exe, входящая в состав операционных систем Windows, MS-DOS и некоторых средств разработки, которая выполняет такую же работу. Принцип работы приложения не сложен (листинг 10.42). Программа сравнивает байт за байтом два файла, пока не будет достигнут конец файла. Чтобы не делать лишнюю работу, программа использует две проверки, которые повышают эффективность ее работы. Во-первых, если сравнивается один и тот же файл (указаны одинаковые пути к файлам), то побайтное сравнение не производится, так как и так понятно, что содержимое одинаково. Во-вторых, если размер файлов различается, то проверка по байтам также не производится, так как файлы разной длины не могут быть одинаковыми. Для работы нам понадобятся два текстовых поля, в которых пользователь должен ввести путь к сравниваемым файлам, и кнопка.



Возвращаем true, так как сравнивается один и тот же файл, return true;

Открываем два файла.

fsl = new FileStream(filel, FileMode.Open); fs2 = new FileStream(file2, FileMode.Open);

Проверяем размеры файла. Если размеры отличаются,

то файлы не одинаковы.

if (fsl.Length != fs2.Length)

Закрываем файлы fsl.Close О; fs2.Close();

Возвращаем false, так как файлы не одинаковы return false;

Читаем и сравниваем байт каждого файла

пока не встретим несовпадаюш?<[й байт

или пока не будет достигнут конец файла.

Считываем один байт из каждого файла, filelbyte = fsi.ReadByte(); file2byte = fs2.ReadByte();

while ((filelbyte == file2byte) && (filelbyte != -1));

Закрьшаем файлы, fsl.Close О; fs2.Close 0;

Возвращается true в случае успешного сравнения всех байтов.

filelbyte равен file2byte, если содержимое файлов

полностью совпадает.

return ((filelbyte - file2byte) == 0);



1 ... 113 114 115 [ 116 ] 117 118 119 ... 170

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика