После завершения работы удалить файлы с дискового носителя

Государственное образовательное учреждение высшего профессионального образования

«Казанский национальный исследовательский технический университет им. А.Н.Туполева»

Кафедра автоматизированных систем обработки информации и управления

Лабораторная работа № 1

НОСИТЕЛИ, ПАПКИ И ФАЙЛЫ.

ПОСЛЕДОВАТЕЛЬНАЯ ОБРАБОТКА ФАЙЛОВ

Вариант №12

Выполнил: студент группы 4209 Шильников Д. В.

Проверил: Суздальцев В.А.

Казань. 2013

Цель проведения лабораторной работы

Целью проведения лабораторной работы является привитие практических навыков определения объемных и временных характеристик файлов при последовательной обработке.

Перед выполнением работы студент должен знать основы программирования на языке С#, методы обработки последовательных файлов и ознакомится с теоретическим материалом лекций соответствующего раздела дисциплины «Информатика».

Порядок выполнения лабораторной работы

1. Определить размер кластера носителя и количество секторов в кластере. Для этого создать файл в текстовом редакторе (Блокнот) небольшого размера (до 512 байтов). Определить свойства файла («Правая клавиша мыши» + «Свойства») и занести их в таблицу. Свойство: «На диске» определить размер кластера. Размер сектора считать равным 512 байт. Результаты прдоставить в форме таблицы (см. таблицу № 1).

2. Написать и отладить программу создания файла на языке С#. Программу подготовить для консольного режима. Использовать фрагменты примера программы из приложения 1. в отчет включить алгоритм программы (схема алгоритмы) и ее текст (C#).

3. Подготовить семь текстовых файлов в соответствии с заданием (см. таблица 2) лабораторной работы (файлы с записями фиксированной длины). Имена файлов должны включать номер файла, размер в кластерах, фамилию студента (например, f1_1000_Иванов.txt). Перед созданием оценить объем файлов и определить объем свободного места на носителе. Сделать вывод о возможности создания файлов. Результаты расчетов занести в таблицу (таблица 3). Перед созданием файлов на носителе предоставить расчеты преподавателю для проверки. Все расчеты оформлять в соответствии с требованиями подготовки научно-технических отчетов. Сделать выводы об объеме незаполненного пространства кластеров и определить процент заполнения дисковой памяти.

4. Определить характеристики полного имени подготовленных файлов: (полное имя, его длина, длина пути, резерв длины пути (максимальная длина пути: 240 символов), резерв длины имени файла).

5. Определить временные характеристики файлов, полученные при их создании (самостоятельно спроектировать таблицу для размещения результатов и разместить в ней результаты экспериментов).

5.1. Время создания файла, среднее время добавления записи и создания кластера.

5.2. Построить графики изменения среднего времени добавления записи, и кластера от объема файла в записях и кластерах (использовать табличный процессор Excel).

6. Написать и отладить программу на языке С#, выполняющую следующие функции для файла:

6.1. Последовательное чтение записей файла.

6.2. Определение количества записей в файле.

6.3. Определение объема полезной информации в файле.

6.4. Определение длины каждой записи файла.

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

6.6. Определение времени чтения файла, включая время открытия и закрытия файлов.

6.7. Результаты экспериментов отобразить в таблице и на графиках (самостоятельно спроектировать таблицу для размещения результатов и разместить в ней результаты экспериментов).

6.8. Сделать выводы о видах временных зависимостей.

После завершения работы удалить файлы с дискового носителя.

7. Подготовить отчет о выполнении лабораторной работы.

8. Поготовится к теоретическому опросу контролиррующей системой.

9. Защитить отчет лабораторной работы

1. Определить размер кластера носителя и количество секторов в кластере. Результаты предоставить в форме таблицы.

Определим размер кластера носителя и количество секторов в кластере. Для этого создадим файл в текстовом редакторе небольшого размера. Для того чтобы определить размер кластера носителя, нужно нажать правой кнопкой мыши по созданному текстовому документу и нажать на Свойства. В появившемся окне в строке На диске:видно сколько памяти выделяется для хранения данного текстового документа на диске. В нашем случае размер текстового документа - 7 Байт, размер на диске – 4 Кб. Это значит, что размер кластера носителя – 4Кб или 4×1024=4096 Байт. Считая размер сектора равным 512 Байт, можно вычислить количество секторов в кластере. Для этого размер кластера разделим на размер сектора:4096 Байт: 512 Байт=8. Все результаты предоставим в форме таблицы:

 
 
Таблица 1. Характеристики файла  

  Характеристика файла Значение
Имя файла Ш.Д.
Приложение Блокнот
Размещение C:\work\4209\Shilnikov_D
Размер в байтах
Размер в Кбайтах 0,0009765625
Размер в Мбайтах 0.00000095367431640625
На диске в байтах
На диске в Кбайтах
На диске в Мбайтах 0.00390625
Размер в секторах (сектор: 512 байт)
Размер в кластерах 4кб
Создан 11 сентября 2013 г., 12:32:11
Изменен 11 сентября 2013 г., 12:37:52
Открыт 11 сентября 2013 г., 12:43:33
Только чтение нет
Скрытый нет
Архивный да

2. Написать и отладить программу создания файла на языке С#. Программу подготовить для консольного режима. Использовать фрагменты примера программы из приложения 1. в отчет включить алгоритм программы (схема алгоритмы) и ее текст (C#).

Напишем и отладим программу создания файла на языке С# в консольном режиме, используя фрагменты примера программы из приложения 1. Создадим новый проект в Microsoft Visual Studio C# (MVS C#). Для начала запускаем программу MVS C# следующим образом: Пуск→Все программы→ Microsoft Visual Studio 2008.Чтобы создать проект проделываем следующие операции: на панели быстрого доступа нажимаем на Fileдалее выбираем New→Project.В появившемся окне в левом столбце выбираем Visual С++, появится несколько строчек, выбираем Visual С#.В правом столбце выбираем режим консольного приложения, т.е. выбираем строчку ConsoleApplication.Далее появится новое окно, в котором нажимаем на Finish.

Далее, используя навыки программирования, создаем программу, которая будет создавать новый текстовый документ.

Текст программы:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

namespace Consol

{

class Program

{

static void Main(string[] args)

{

int i;

string str;

FileStream f1;

const int n = 71040;

f1 = new FileStream("Fl_1110_Shilnikov_D.txt", FileMode.Create);

f1.Close();

f1 = new FileStream("Fl_1110_Shilnikov_D.txt", FileMode.Open, FileAccess.Write);

StreamWriter fstr = new StreamWriter(f1);

str = "llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll";

Console.Write("Nagmite Enter");

Console.ReadLine();

for (i = 0; i < n; i++)

{ fstr.WriteLine(str); }

fstr.Close();

}

}

}

Данная программа создает в папке, в которой расположен сам проект, пустой текстовый документ «Fl_1110_Shilnikov_D.txt».

Блок-схема алгоритма программы будет выглядеть следующим образом:

 
  После завершения работы удалить файлы с дискового носителя - student2.ru

3. Подготовить семь текстовых файлов в соответствии с заданием (см. таблица 2) лабораторной работы (файлы с записями фиксированной длины). Имена файлов должны включать номер файла, размер в кластерах, фамилию студента (например, f1_1110_Shilnikov.txt). Перед созданием оценить объем файлов и определить объем свободного места на носителе. Сделать вывод о возможности создания файлов. Результаты расчетов занести в таблицу 3. Перед созданием файлов на носителе предоставить расчеты преподавателю для проверки. Все расчеты оформлять в соответствии с требованиями подготовки научно-технических отчетов. Сделать выводы об объеме незаполненного пространства кластеров и определить процент заполнения дисковой памяти.

Таблица 2. Вариант задания

  Длина записи Размеры файлов в кластерах Символ для формирования содержания записи
Файл f1 Файл f2 Файл f3 Файл f4 Файл f5 Файл f6 Файл f7
l

Подготовим семь текстовых файлов в соответствии с вариантом №12 лабораторной работы. Перед созданием оценим объем файлов и определим объем свободного места на носителе. Сделаем это следующим образом: Заходим в Мой компьютер, нажимаем правой кнопкой на диск С, в появившемся окне нажимаем на Свойства, находим две строчки – Занятои Свободно, запишем соответствующие значения этим параметрам:

Занято:45 368 201 216 байт

Свободно:19 644 379 136 байт

Оценим объем файлов, которые нам предстоит создать. Зная, что на диске 1 кластер занимает 4096 байт, определим объем всех семи файлов по следующей формуле: V=k*b.

1 файл: 1110 × 4096 = 4546560 байт;

2 файл: 1310 × 4096 = 5365760 байт;

3 файл: 1510 × 4096 = 6184960 байт;

4 файл: 1710 × 4096 = 7004160 байт;

5 файл: 1910 × 4096 = 488960 байт;

6 файл: 2110 × 4096 = 8642560 байт;

7 файл: 2310 × 4096 = 9461760 байт.

Определим объем суммы всех семи файлов:

4546560 + 5365760 + 6184960 + 7004160 + 488960 + 8642560 + 9461760 =

49029120 байт. Т.к. объем свободного места на диске превышает объем суммы наших семи файлов (19 644 379 136 <49 029 120), то возможность создать эти файлы существует.

Результаты расчетов занесем в таблицу 3:

Таблица 3. Объемные характеристики файлов

Размер кластера в байтах – 4096 Размер записи - 64
  Имя файла в папке «ЛБ4209» Размер файла в кластерах (из задания) Количество записей в кластере Размер файла в записях Размер файла в Мбайт, Кбайт, байт На диске Мбайт, Кбайт, байт
f1 f1_1110_Шильников 4.3359375   4.3359375
f2 f2_1310_Шильников 5.1171875 5.1171875  
f3 f3_1510_Шильников 5.8984375 5.8984375  
f4 f4_1710_Шильников 6.6796875 6.6796875  
f5 f5_1910_Шильников 7.4609375 7.4609375  
f6 f6_2110_Шильников 8.2421875  
f7 f7_2310_Шильников 9.0234375 9.0234375  
Всего 46.7578125 46.7578125  
Свободное место на диске C       ----  

Определение процента заполнения дисковой памяти:

Чтобы определить полный объем дисковой памяти необходимо сложить объем свободного места и объем занятого места на диске:

Занято:45 368 201 216 байт

Свободно:19 644 379 136 байт

Полный объем дисковой памяти: 45 368 201 216 + 19 644 379 136 = 65 012 580 352 Байт.

Чтобы определить процент заполнения дисковой памяти, необходимо разделить объем свободного места на диске на полный объем дисковой памяти и полученное частное умножить на 100%.

Процент свободного места: (19 644 379 136 / 65 012 580 352) × 100% =

0.302 100% = 30.2%

4. Определить характеристики полного имени подготовленных файлов: (полное имя, его длина, длина пути, резерв длины пути (максимальная длина пути: 240 символов), резерв длины имени файла).

Чтобы определить резерв длины пути файла, необходимо из максимально возможной длины пути файла вычесть длину пути файла.

Определим характеристики полного имени подготовленных файлов:

Первый текстовый файл:

Полное имя:fl_1110_Shilnikov_D.txt

Длина имени:23 символа

Путь файла: sys:\work\4209\Shilnikov_Daniil\

Длина пути файла:55 символов

Резерв длины пути:240 – 32 = 208 символов

Второй текстовый файл:

Полное имя:f2_1310_Shilnikov_D.txt

Длина имени:23 символа

Путь файла: sys:\work\4209\Shilnikov_Daniil\

Длина пути файла:55 символов

Резерв длины пути:240 – 32 = 208 символов

Третий текстовый файл:

Полное имя:f3_1510_Shilnikov_D.txt

Длина имени:23 символа

Путь файла: sys:\work\4209\Shilnikov_ Daniil \

Длина пути файла:55 символов

Резерв длины пути:240 – 32 = 208 символов

Четвертый текстовый файл:

Полное имя:f4_1710_Shilnikov_D.txt

Длина имени:23 символа

Путь файла: sys:\work\4209\Shilnikov_ Daniil \

Длина пути файла:55 символов

Резерв длины пути:240 – 32 = 208 символов

Пятый текстовый файл:

Полное имя:f5_1910_Shilnikov_D.txt

Длина имени:23 символа

Путь файла: sys:\work\4209\Shilnikov_ Daniil \

Длина пути файла:55 символов

Резерв длины пути:240 – 32 = 208 символов

Шестой текстовый файл:

Полное имя:f6_2110_Shilnikov_D.txt

Длина имени:23 символа

Путь файла: sys:\work\4209\Shilnikov_Daniil\

Длина пути файла:55 символов

Резерв длины пути:240 – 32 = 208 символов

Седьмой текстовый файл:

Полное имя:f7_2310_Shilnikov_D.txt

Длина имени:23 символа

Путь файла: sys:\work\4209\Shilnikov_ Daniil \

Длина пути файла:55 символов

Резерв длины пути:240 – 32 = 208 символов

5. Определить временные характеристики файлов, полученные при их создании (самостоятельно спроектировать таблицу для размещения результатов и разместить в ней результаты экспериментов).

1. Время создания файла, среднее время добавления записи и создания кластера.

2. Построить графики изменения среднего времени добавления записи, и кластера от объема файла в записях и кластерах (использовать табличный процессор Excel).

5.1 Для того чтобы определить время создания файла, необходимо дополнить текст нашей программы функциями подсчета времени, которые будут располагаться до и после цикла записи строк в файл. Разность этих значений функций и будет значением времени создания файла. Само это значение будет записываться в отдельный файл <show.txt>.

Текст программы:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

namespace Consol

{

class Program

{

static void Main(string[] args)

{

FileInfo foutshow = new FileInfo("show.txt");

DateTime nowсn = new DateTime();

double tb = 0;

double te = 0;

int i;

string str;

FileStream f1;

const int n = 71040;

f1 = new FileStream("Fl_1110_Shilnikov_D.txt", FileMode.Create);

f1.Close();

f1 = new FileStream("Fl_1120_Shilnikov_D.txt", FileMode.Open, FileAccess.Write);

StreamWriter fstr = new StreamWriter(f1);

str = "llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll";

Console.Write("Nagmite Enter");

Console.ReadLine();

nowсn = DateTime.Now;

tb = nowсn.Hour * 3600 + nowсn.Minute * 60 + nowсn.MilliSecond;

for (i = 0; i < n; i++)

{ fstr.WriteLine(str); }

nowсn = DateTime.Now;

te = nowсn.Hour * 3600 + nowсn.Minute * 60 + nowсn.MilliSecond;

fstr.Close();

StreamWriter f = foutshow.CreateText();

f.WriteLine

(string.Format("\"{0:000}\";\"{1:000}\";\"{2:0000}\"", tb, te, te - tb));

f.Close();

}

}

}

Проделаем данную операцию со всеми семи программами.

Среднее время добавления записи можно найти по формуле: t=T/c, где t – это среднее время добавления, T – это время создания файла, с – это количество записей в файле.

Проведем вычисления для всех файлов:

Для 1-го файла: 47 / 71040=0.00065 с;

Для 2-го файла: 62 / 83840=0.00073 с;

Для 3-го файла: 70 / 96640=0.00072 c;

Для 4-го файла: 78 / 109440=0.0007 c;

Для 5-го файла: 93 / 122240=0.00075 c;

Для 6-го файла: 94 / 135040=0.00069 c;

Для 7-го файла: 110 / 147840=0.00074 c.

Среднее время создания кластера можно найти по формуле: V=T/k, где V – это среднее время добавления записи, T – это время создания файла, k – это количество занимаемых кластеров файлом.

Проведем вычисления для всех файлов:

Для 1-го файла: 47 / 1110=0.0419 с;

Для 2-го файла: 62 / 1310=0.0469 с;

Для 3-го файла: 70 / 1510=0.0460 c;

Для 4-го файла: 78 / 1710=0.0453 c;

Для 5-го файла: 93 / 1910=0.0484 c;

Для 6-го файла: 94 / 2110=0.0443 c;

Для 7-го файла: 110 / 2310=0.047 c.

Занесем все данные в таблицу 4:

Таблица №4. временные характеристики файлов

Имя файла Время создания файла Среднее время добавления записи Среднее время создания кластера
Fl_1110_Shilnikov_D.txt 0.00065 с 0.0419 с
F2_1310_Shilnikov_D.txt 0.00073 с 0.0469 с
F3_1510_Shilnikov_D.txt 0.00072 с 0.0460 с
F4_1710_Shilnikov_D.txt 0.0007 с 0.0453 c
F5_1910_Shilnikov_D.txt 0.00075 с 0.0484 с
F6_2110_Shilnikov_D.txt 0.00069 с 0.0443 с
F7_2310_Shilnikov_D.txt 0.00074 с 0.047 c

5.2. Чтобы построить график изменения среднего времени добавления записи, от объема файла в записях, необходимо скопировать значения среднего времени добавления записи и значения количества записей в рабочее поле табличного процессора Excel и по этим значениям построить график. Выполнив данные действия, получим график, изображенный на Рис.1:

После завершения работы удалить файлы с дискового носителя - student2.ru

Рис. 1. График изменения среднего времени добавления

записи от объема файла в записях.

Чтобы построить график изменения среднего времени добавления кластера от объема файла в кластерах, необходимо скопировать значения среднего времени добавления кластера и значения количества кластеров в рабочее поле табличного процессора Excel и по этим значениям построить график. Выполнив данные действия, получим график, изображенный на рис.2:

После завершения работы удалить файлы с дискового носителя - student2.ru

Рис. 2. График изменения среднего времени добавления

кластера от объема файла в кластерах.

6. Написать и отладить программу на языке С#, выполняющую следующие функции для файла:

1. Последовательное чтение записей файла.

2. Определение количества записей в файле.

3. Определение объем полезной информации в файле.

4. Определение длины каждой записи файла.

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

6. Определение времени чтения файла, включая время открытия и закрытия файлов.

7. Результаты экспериментов отобразить в таблице и на графиках (самостоятельно спроектировать таблицу для размещения результатов и разместить в ней результаты экспериментов).

8. Сделать выводы о видах временных зависимостей.

Используя навыки программирования, напишем и отладим программу на языке С#, выполняющую следующие функции для файла:

1. Последовательное чтение записей файла.

2. Определение количества записей в файле.

3. Определение объем полезной информации в файле.

4. Определение длины каждой записи файла.

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

6. Определение времени чтения файла, включая время открытия и закрытия файлов.

Текст программы:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

namespace Информатика

{

class Program

{

static void Main(string[] args)

{

int i, k = 0;

int tb = 0;

int te = 0;

string s = null;

int q = 0;

int L = 0;

int l = 0;

int a = 0;

FileStream f1;

FileInfo fout = new FileInfo("Результат.txt");

StreamWriter fo = fout.CreateText();

DateTime nowсn = new DateTime();

nowсn = DateTime.Now;

tb = nowсn.Hour * 3600 + nowсn.Minute * 60 + nowсn.Second;

f1 = new FileStream("Fl_1110_Shilnikov_D.txt", FileMode.Open);

do

{

i = f1.ReadByte();

if (i != -1)

k++;

}

while (i != -1);

f1.Close();

// Console.ReadLine();

StreamReader fi = new StreamReader("Fl_1110_Shilnikov_D.txt", Encoding.GetEncoding(1251));

while ((s = fi.ReadLine()) != null)

{

l = s.Length;

L = L + l + 2;

q++;

fo.WriteLine(string.Format("\"{0:000}\";\"{1:0000}\"", a, l));

fo.WriteLine(string.Format("\"{0}", s));

a = L;

}

fo.WriteLine(string.Format("Количество записей: {0}", q));

fo.WriteLine(string.Format("Объем полезной информации: {0}", k - (q * 2)));

fi.Close();

nowсn = DateTime.Now;

te = nowсn.Hour * 3600 + nowсn.Minute * 60 + nowсn.Second;

fo.WriteLine

(string.Format("\"Время открытия:{0:00000}\";\"Время закрытиия:{1:00000}\";\"Время чтения файла:{2:000000}\"", tb, te, te - tb));

fo.Close();

}

}

}

Данная программа создает текстовый документ в котором записывается количество записей в файле, объем полезной информации в файле, длина каждой записи файла, смещение каждой записи в файле. время чтения файла, включая время открытия и закрытия файла.

Применив данную программу ко всем семи нашим текстовым документам, создадим и заполним таблицу 4, отображающую результаты эксперимента:

Таблица №4. Результаты эксперимента.

Имя файла Количество записей в файле Объем полезной информации в файле Время чтения файла (мс) Среднее время добавления записи (мс)
Fl_1110_Shilnikov_D.txt 4444160 Байт 0,007659
F2_1310_Shilnikov_D.txt 5237760 Байт 0,008902
F3_1510_Shilnikov_D.txt 6031360 Байт 0,008409
F4_1710_Shilnikov_D.txt 6824960 Байт 0,01032
F5_1910_Shilnikov_D.txt 7635160 Байт 0,008667
F6_2110_Shilnikov_D.txt 8413960 Байт 0,008063
F7_2310_Shilnikov_D.txt 9205760 Байт 0,007658

Определим среднее время чтения записи, для того чтобы сравнить его со средним значением времени создания записи.

Среднее время чтения записи можно найти по формуле: t=T/c, где t – это среднее время чтения записи, T – это время чтения файла, с – это количество записей в файле.

Проведем вычисления для всех файлов:

Для 1-го файла: 549 / 71040=0.00014 с;

Для 2-го файла: 752 / 83840=0.00016 с;

Для 3-го файла: 818 / 96640=0.00018 c;

Для 4-го файла: 1136 / 109440=0.0002 c;

Для 5-го файла: 1065 / 122240=0.0002 c;

Для 6-го файла: 1094 / 135040=0.00021 c;

Для 7-го файла: 1137 / 147840=0.00021 c.

Построим график изменения среднего времени чтения записи от объема файла в записях, используя табличный процессор Excel, график изображен на рис.3:

После завершения работы удалить файлы с дискового носителя - student2.ru

Рис. 3. График изменения среднего времени чтения

записи от объема файла в записях.

По результатам экспериментов, отображенных в таблицах и на графиках можно сделать вывод:

Время записи данных в файл и время чтения данных из файла прямо пропорционально зависят от объема информации, которую требуется записать в файл или же прочитать из файла.

Наши рекомендации