
- •Государственное образовательное учреждение высшего профессионального образования
- •Носители, папки и файлы. Последовательная обработка файлов
- •Цель проведения лабораторной работы
- •Порядок выполнения лабораторной работы
- •После завершения работы удалить файлы с дискового носителя.
- •Определение процента заполнения дисковой памяти:
- •Определить характеристики полного имени подготовленных файлов: (полное имя, его длина, длина пути, резерв длины пути (максимальная длина пути: 240 символов), резерв длины имени файла).
- •Определить временные характеристики файлов, полученные при их создании (самостоятельно спроектировать таблицу для размещения результатов и разместить в ней результаты экспериментов).
- •Время создания файла, среднее время добавления записи и создания кластера.
- •Построить графики изменения среднего времени добавления записи, и кластера от объема файла в записях и кластерах (использовать табличный процессор Excel).
Определение процента заполнения дисковой памяти:
Чтобы определить полный объем дисковой памяти необходимо сложить объем свободного места и объем занятого места на диске:
Занято: 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% =
100% = 30.2%
Определить характеристики полного имени подготовленных файлов: (полное имя, его длина, длина пути, резерв длины пути (максимальная длина пути: 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 символов
Определить временные характеристики файлов, полученные при их создании (самостоятельно спроектировать таблицу для размещения результатов и разместить в ней результаты экспериментов).
Время создания файла, среднее время добавления записи и создания кластера.
Построить графики изменения среднего времени добавления записи, и кластера от объема файла в записях и кластерах (использовать табличный процессор 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 |
47 |
0.00065 с |
0.0419 с |
F2_1310_Shilnikov_D.txt |
62 |
0.00073 с |
0.0469 с |
F3_1510_Shilnikov_D.txt |
70 |
0.00072 с |
0.0460 с |
F4_1710_Shilnikov_D.txt |
78 |
0.0007 с |
0.0453 c |
F5_1910_Shilnikov_D.txt |
93 |
0.00075 с |
0.0484 с |
F6_2110_Shilnikov_D.txt |
94 |
0.00069 с |
0.0443 с |
F7_2310_Shilnikov_D.txt |
110 |
0.00074 с |
0.047 c |
5.2. Чтобы построить график изменения среднего времени добавления записи, от объема файла в записях, необходимо скопировать значения среднего времени добавления записи и значения количества записей в рабочее поле табличного процессора Excel и по этим значениям построить график. Выполнив данные действия, получим график, изображенный на Рис.1:
Рис. 1. График изменения среднего времени добавления
записи от объема файла в записях.
Чтобы построить график изменения среднего времени добавления кластера от объема файла в кластерах, необходимо скопировать значения среднего времени добавления кластера и значения количества кластеров в рабочее поле табличного процессора Excel и по этим значениям построить график. Выполнив данные действия, получим график, изображенный на рис.2:
Рис. 2. График изменения среднего времени добавления
кластера от объема файла в кластерах.
Написать и отладить программу на языке С#, выполняющую следующие функции для файла:
Последовательное чтение записей файла.
Определение количества записей в файле.
Определение объем полезной информации в файле.
Определение длины каждой записи файла.
Определение смещения каждой записи в файле.
Определение времени чтения файла, включая время открытия и закрытия файлов.
Результаты экспериментов отобразить в таблице и на графиках (самостоятельно спроектировать таблицу для размещения результатов и разместить в ней результаты экспериментов).
Сделать выводы о видах временных зависимостей.
Используя навыки программирования, напишем и отладим программу на языке С#, выполняющую следующие функции для файла:
Последовательное чтение записей файла.
Определение количества записей в файле.
Определение объем полезной информации в файле.
Определение длины каждой записи файла.
Определение смещения каждой записи в файле.
Определение времени чтения файла, включая время открытия и закрытия файлов.
Текст программы:
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 |
71040 |
4444160 Байт |
549 |
0,007659 |
F2_1310_Shilnikov_D.txt |
83840 |
5237760 Байт |
752 |
0,008902 |
F3_1510_Shilnikov_D.txt |
96640 |
6031360 Байт |
818 |
0,008409 |
F4_1710_Shilnikov_D.txt |
109440 |
6824960 Байт |
1136 |
0,01032 |
F5_1910_Shilnikov_D.txt |
122240 |
7635160 Байт |
1065 |
0,008667 |
F6_2110_Shilnikov_D.txt |
135040 |
8413960 Байт |
1094 |
0,008063 |
F7_2310_Shilnikov_D.txt |
147840 |
9205760 Байт |
1137 |
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:
Рис. 3. График изменения среднего времени чтения
записи от объема файла в записях.
По результатам экспериментов, отображенных в таблицах и на графиках можно сделать вывод:
Время записи данных в файл и время чтения данных из файла прямо пропорционально зависят от объема информации, которую требуется записать в файл или же прочитать из файла.