Задача темы: изучить методику и получить навыки в разработке тестового приложения побайтовой и посимвольной загрузки и вывода содержания текстового файла в форму для просмотра и оценки скорости этих процессов.
Разработка: Приложение "Viewer" для просмотра содержания и оценки скорости загрузки текстовых файлов.
Состав выполняемых функций:
Наращивание функциональности не предусматривается.
Защита – модификация данных не предусматривается.
В качестве входных данных используется любые текстовые файлы.
Выходные данные программы – графическое отображение результатов в ListBox, ProgressBar и MessageBox
о вычисленной продолжительности загрузки и вывода
информации для SmartDevice.
Шаг 1. Разработка графического интерфейса
Используется только одна форма Form1. В форме располагается listBox
для вывода содержимого текстового файла и ProgressBar для индикации
скорости загрузки, для которого изначально устанавливается свойство Visible=False.
(рис 4.1) Примерный дизайн – элемент ProgressBar невидим.В дизайнере формы устанавливаются также невидимые элементы –
mainMenu с тремя опциями (Посимвольный вывод; Побайтовый вывод;
Выход), openFileDialog и timer для подсчета времени загрузки файла и
вывода его содержимого в Листбокс. Примерный дизайн формы приведен на
рис.4.1.
Шаг 2. Расширяем состав библиотек формы 1
using System; using System.Drawing; using System.Collections; using System.Windows.Forms; using System.Data; //Добавляем библиотеки работы с файлами и регулярными выражениями using System.IO; using System.Text.RegularExpressions;
Шаг.3 Создаем процедуру автозагрузки данных в форму
Начнем с вывода информации "О программе" в listBox1.
private void Form1_Load (object sender, System.EventArgs e) {
listBox1.Items.Add(" О программе");
listBox1.Items.Add("");
listBox1.Items.Add(" Используя конструкцию записи строки");
listBox1.Items.Add(" listBox1. Items. Add (S), где:");
listBox1.Items.Add(" S-переменная,содержащая текст строки");
listBox1.Items.Add(" файла, создайте программу просмотра");
listBox1.Items.Add(" содержимого файла");
listBox1.Items.Add("");
listBox1.Items.Add(" (C)Родигин Л.А., 2006");
listBox1.Items.Add(" C#,Платформа VisualStudio NET, 2003");
}
Шаг 4. Создаем процедуру посимвольной загрузки файла
//символьный вывод
private void menuItem1_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(IOException exc) {если файл недоступен
MessageBox.Show ("Невозможно открыть файл \n"+file_name,"Ошибка");
return;}
long L=fin.Length; // вычисляем длину файла (мусор?)
// Считываем значения из файла
StreamReader fstr_in=new StreamReader(fin);
//в переменную считываются все символы, пока не кончится строка
string sc="0"; // загружаемая из файла строка
int P=1; // начальное деление линейки progressBar
int s=0; // число символов в строке
progressBar1.Visible=true; // показываем progressBar
listBox1.Items.Clear();
// вычиcляем число строк в файле
long T;
timer1.Enabled=true; // запускаем таймер
T=DateTime.Now.Ticks; // фиксируем время старта таймера
while((sc=fstr_in.ReadLine())!=null) {
s=s+sc.Length;
listBox1.Items.Add(sc); //добавляем строку в листбокс
// progressBar рассчитан на 100 делений, поэтому вычисляем цену деления
if (P*(int)L/100<=s) {
P=P+1;
progressBar1.Value=P-1;
}
}
fstr_in.Close(); // закрываем поток и выводим сообщение с результатами
MessageBox.Show((DateTime.Now.Ticks-T).ToString(),"Время загрузки");
timer1.Enabled=false; // выгружаем из памяти таймер
progressBar1.Visible=false; // прячем progreassBar
return; // возвращаемся в программу
}
Шаг 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();
}
Вопрос: Что же быстрее, побайтовый вывод или посимвольный?
Задача темы: изучить методику и получить навыки в разработке тестового приложения побайтовой и посимвольной загрузки и вывода содержания текстового файла в форму для просмотра и оценки скорости этих процессов.
Разработка: Приложение "Viewer" для просмотра содержания и оценки скорости загрузки текстовых файлов.
Состав выполняемых функций:
Наращивание функциональности не предусматривается.
Защита – модификация данных не предусматривается.
В качестве входных данных используется любые текстовые файлы.
Выходные данные программы – графическое отображение результатов в ListBox, ProgressBar и MessageBox
о вычисленной продолжительности загрузки и вывода
информации для SmartDevice.
Шаг 1. Разработка графического интерфейса
Используется только одна форма Form1. В форме располагается listBox
для вывода содержимого текстового файла и ProgressBar для индикации
скорости загрузки, для которого изначально устанавливается свойство Visible=False.
(рис 4.1) Примерный дизайн – элемент ProgressBar невидим.В дизайнере формы устанавливаются также невидимые элементы –
mainMenu с тремя опциями (Посимвольный вывод; Побайтовый вывод;
Выход), openFileDialog и timer для подсчета времени загрузки файла и
вывода его содержимого в Листбокс. Примерный дизайн формы приведен на
рис.4.1.
Шаг 2. Расширяем состав библиотек формы 1
using System; using System.Drawing; using System.Collections; using System.Windows.Forms; using System.Data; //Добавляем библиотеки работы с файлами и регулярными выражениями using System.IO; using System.Text.RegularExpressions;
Шаг.3 Создаем процедуру автозагрузки данных в форму
Начнем с вывода информации "О программе" в listBox1.
private void Form1_Load (object sender, System.EventArgs e) {
listBox1.Items.Add(" О программе");
listBox1.Items.Add("");
listBox1.Items.Add(" Используя конструкцию записи строки");
listBox1.Items.Add(" listBox1. Items. Add (S), где:");
listBox1.Items.Add(" S-переменная,содержащая текст строки");
listBox1.Items.Add(" файла, создайте программу просмотра");
listBox1.Items.Add(" содержимого файла");
listBox1.Items.Add("");
listBox1.Items.Add(" (C)Родигин Л.А., 2006");
listBox1.Items.Add(" C#,Платформа VisualStudio NET, 2003");
}
Шаг 4. Создаем процедуру посимвольной загрузки файла
//символьный вывод
private void menuItem1_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(IOException exc) {если файл недоступен
MessageBox.Show ("Невозможно открыть файл \n"+file_name,"Ошибка");
return;}
long L=fin.Length; // вычисляем длину файла (мусор?)
// Считываем значения из файла
StreamReader fstr_in=new StreamReader(fin);
//в переменную считываются все символы, пока не кончится строка
string sc="0"; // загружаемая из файла строка
int P=1; // начальное деление линейки progressBar
int s=0; // число символов в строке
progressBar1.Visible=true; // показываем progressBar
listBox1.Items.Clear();
// вычиcляем число строк в файле
long T;
timer1.Enabled=true; // запускаем таймер
T=DateTime.Now.Ticks; // фиксируем время старта таймера
while((sc=fstr_in.ReadLine())!=null) {
s=s+sc.Length;
listBox1.Items.Add(sc); //добавляем строку в листбокс
// progressBar рассчитан на 100 делений, поэтому вычисляем цену деления
if (P*(int)L/100<=s) {
P=P+1;
progressBar1.Value=P-1;
}
}
fstr_in.Close(); // закрываем поток и выводим сообщение с результатами
MessageBox.Show((DateTime.Now.Ticks-T).ToString(),"Время загрузки");
timer1.Enabled=false; // выгружаем из памяти таймер
progressBar1.Visible=false; // прячем progreassBar
return; // возвращаемся в программу
}
Шаг 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();
}
Вопрос: Что же быстрее, побайтовый вывод или посимвольный?
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.