Российская международная академия туризма
Опубликован: 09.09.2008 | Доступ: свободный | Студентов: 811 / 38 | Оценка: 4.33 / 4.33 | Длительность: 13:07:00
Лекция 5:

Скорость загрузки текстового файла

< Лекция 4 || Лекция 5: 12 || Лекция 6 >

Шаг 5. Создаем процедуру побайтовой загрузки файла

// побайтовый вывод
private void menuItem2_Click(object sender, System.EventArgs e) {
string file_name="*.*";
if (openFileDialog1.ShowDialog()==DialogResult.OK) {
	file_name=openFileDialog1.FileName;
	}
else {	return;}		
FileStream fin;
try {
fin =new FileStream(file_name,FileMode.Open); 
	}
// набор catch для одного try 
catch(FileNotFoundException exc){// если файл не найден
MessageBox.Show(file_name,"Файл не найден");
return;}
catch(IndexOutOfRangeException exc){// если файл не доступен
MessageBox.Show(file_name,"Файл не доступен");
return;}
long L=fin.Length;
int i;

int P=1;
listBox1.Items.Clear();
// читаем байты
int s=0;
char ch=' ';
string sc="";
// считаем время
timer1.Enabled=true; // запускаем таймер
long T=DateTime.Now.Ticks; // фиксируем время начальной загрузки
do {// открываем цикл считывания
try{
	i=fin.ReadByte(); // открываем файл для чтения
	}
	catch(IOException exc){
	return;
	}
// если поток существует	
	progressBar1.Visible=true;
	if(i!=1)
	{// итератор 
	s=s+1;
	ch=(char)i;
	sc=sc+((char)i).ToString();
		if (ch = = '\n') {
		listBox1.Items.Add(sc);
		sc="";
		}
//Кратно 100
	if (P*(int)L/100==s) {
		P=P+1;
		progressBar1.Value=P-1;
		}
	}
}
// если поток закончился
while(i!=-1);
fin.Close();
MessageBox.Show((DateTime.Now.Ticks-T).ToString(),"Время загрузки");
timer1.Enabled=false;
progressBar1.Visible=false;
}

Шаг 6. Выход из программы

private void menuItem5_Click(object sender, System.EventArgs e) {
Application.Exit();
}

Вопрос: Что же быстрее, побайтовый вывод или посимвольный?

< Лекция 4 || Лекция 5: 12 || Лекция 6 >