Примеры создания проектов (приложений),

Тема 10

Создание приложений,
работающих с потоковыми файлами

Главные понятия

Данные в приложениях VB можно не только лишь вводить с клавиатуры и показывать на дисплее, да и читать из файла, где они хранятся, и записывать в файл.

Файл –это поименованная совокупа всех данных, размещенная на наружном запоминающем устройстве, хранимая, пересылаемая и обрабатываемая как единое целое Примеры создания проектов (приложений),. Файл может содержать программку, числовые данные, текст, закодированное изображение и пр. На физическом уровне файлы реализуются как участки памяти на наружных носителях, к примеру, на магнитных дисках либо CD-ROM. Каждый файл обязан иметь имя.

К файловой системе имеет доступ неважно какая прикладная программка, для этого во всех языках программирования Примеры создания проектов (приложений),, в том числе и в VB, имеются особые средства в виде способов классов .NET Framework для работы с файлами.

По методу доступа к данным различают файлы поочередного доступа, случайного доступа и двоичные. В файлах первого вида доступ к инфы осуществляется поочередно от начала до конца файла, в файлах случайного Примеры создания проектов (приложений), доступа – или поочередно, или в случайном порядке, а в двоичных файлах – побайтно.

Текстовые файлы состоят из одной либо более строк, слов либо симво­лов. Обыденные текстовые файлы определены в MS Windows как Текстовые документы и имеют расширение *.txt.

Работа с хоть каким файлом, в том числе с текстовыми файлами, состоит из Примеры создания проектов (приложений), 3-х шагов:

· открытие файлов;

· чтение либо запись инфы из файла либо в файл;

· закрытие файла.

Поток – это программный виртуальный канал для обмена данными меж приложением и Windows либо другим приложением. При содействии приложения с Windows потоки, обычно, употребляются для работы с устройствами и представляют собой абстрактный уровень меж приложением Примеры создания проектов (приложений), и устройством, что позволяет скрыть от приложения низкоуровневый механизм доступа к устройствам, упростить и унифицировать процесс написания программ, использующих ввод/вывод. Поток представляется программеру как логическое устройство приема-передачи инфы. Потоки бывают входные и выходные. Данные, поступающие в поток, обычно, буферизуются, т.е. помещаются в особый буфер данных, в каком они Примеры создания проектов (приложений), могут храниться. Передача данных из буфера получателю данных происходит при запросе от получателя либо в случае наполнения буфера данных. Если получатель производит чтение данных, когда буфер потока пуст, то данная ситуация расценивается как достижение конца потока.

Поток для работы может быть отрыт в текстовом либо бинарном Примеры создания проектов (приложений), режиме. С потоками можно создавать последующие деяния: открывать и закрывать потоки; посылать данные в поток и получать данные из потока; рассматривать ошибки потокового ввода-вывода; управлять буферизацией потока и размером буфера; позиционировать указатель чтения-записи данных в потоке (если может быть). Все потоки и способы для работы с ними связаны с Примеры создания проектов (приложений), понятием файл.

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

Грубо обобщая, можно поделить функции ввода/вывода в каркасе .NET Примеры создания проектов (приложений), Framework на две широкие категории, не зависящие от устройства хранения данных – это запись и чтение.

Данные могут рассматриваться как поток байтов либо знаков. Данные также можно рассматривать как набор объектов. КлассStream(Поток, Абстрактный файл) – абстрактный класс, который является базисным для чтения и записи байтов в некое хранилище данных типа Примеры создания проектов (приложений), файла. Этот класс поддерживает синхронные и асинхронные чтение и запись. Асинхронные способы дискуссируются ниже в данной главе. КлассFileStream, который является производным от классаStream, предоставляет операции чтения и записи последовательности байтов в файл. КонструкторFileStreamделает экземпляр потока. Перегруженные способы классаStream(Поток, Абстрактный поочередный файл) производят чтение и запись в файл.

Для загрузки в текстовое Примеры создания проектов (приложений), поле либо строчку содержимого текстового файла, также для записи строковых данных в файл в VB можно использовать потоковый доступ:

· с внедрением способов класса System.IO библиотеки
Framework.NET;

· с внедрением объекта My.Computer.System.

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

Разглядим Примеры создания проектов (приложений), средства VBдля обработки ошибок времени выполнения.

Ошибки времени выполнения (также именуемые исключениями) появляются при исключительных критериях работы - к примеру, из-за отсутствия диска в дисководе либо неверного данного пути при открытии файла. Блоки кода, обрабатывающие такие ошибки, именуются структурными обработчиками ошибок (либо структурными обработчиками исключений). Их можно использовать для определения ошибок времени выполнения Примеры создания проектов (приложений), при их появлении в программке и опции программки так, что она опять сумеет получить управление и продолжить работу. Для этого имеется блок Try…Catch…End Try – синтаксическая конструкция VB для обработки ошибок.

Ошибка времени выполнения появляется тогда, когда VB пробует выполнить оператор, который по некий причине не может быть выполнен в Примеры создания проектов (приложений), том виде, в каком он написан. Это не означает, что VB недостаточно «умен», чтоб совладать с неувязкой; это означает, что компилятору VB не произнесли, что делать, если что-то пойдет не так.

Можно написать особые процедуры VB, именуемые структурными обработчиками ошибок, которые будут реагировать на ошибки времени выполнения. Обработчик Примеры создания проектов (приложений), ошибок выслеживает ошибку времени выполнения и гласит программке, как продолжать работу при появлении этой ошибки. Обработчики ошибок помещаются в процедуры событий там, где существует возможность появления задачи, либо в общие функции либо подпрограммы, специально созданные для обработки ошибок. Как подразумевает их заглавие, обработчики ошибок обрабатывают ошибку при помощи оператора Примеры создания проектов (приложений), Try…Catch…End Try и специального объекта отслеживания ошибок – экземпляра класса Exception. К примеру, если ошибка времени выполнения произошла при загрузке файла с диска, обработчик ошибок может показать собственное сообщение об ошибке, которое укажет на делему.

Оператор Try нужно поместить в функцию действия конкретно перед оператором, в каком может произойти неожиданная Примеры создания проектов (приложений), ситуация, а блок Catch следует конкретно за ним и содержит операторы, которые нужно выполнить, если произойдет ошибка времени выполнения. Также можно использовать некие дополнительные операторы, такие, как Finally, также вложенные блоки кода Try…Catch…End Try. Базисный синтаксис обработчика исключений Try…Catch…End Try может иметь последующий формат:

Try Операторы, которые могут вызвать Примеры создания проектов (приложений), ошибку времени выполнения Catch Операторы, которые производятся, если ошибка времени выполнения происходит Finally Дополнительные операторы, выполняемые независимо от появления ошибки End Try

где Try, Catch и End Try – это неотклонимые ключевики, а Finally и операторы, которые стоят за ним, необязательны.

В Примерах 4.10.2-1 и 4.10.2-2 продемонстрирована ситуация появления ошибки времени выполнения, связанная с открытием файла.

4.10.2. Внедрение Примеры создания проектов (приложений), классов StreamReader, StreamWriter и объекта My.Computer.FileSystem
для работы с текстовыми файлами

В последних версиях VSиспользуется действенный потоковый доступ к файлам, который является средством .NET Frameworkи определен в пространстве имен (библиотеке классов) System.IO.

Поток (Stream) в VS– это абстрактный тип Stream, который представляет последовательность знаков, передаваемых в среду либо из среды для Примеры создания проектов (приложений), хранения инфы. Потоки позволяют считывать и записывать данные на запоминающее устройство, которое в нашем случае соответствует файлу. Потому над потоками в главном производятся операции чтения (Read), записи (Write поиска (Seek), которые реализованы в классе System.IO.Stream. При этом большая часть потоковых объектов делают буферизацию данных, которая позволяет существенно Примеры создания проектов (приложений), повысить эффективность операций ввода/вывода. При всем этом данные потока не записываются сходу на диск, когда делается запись в файл, а помещаются в буфер и потом сбрасываются на диск, когда поток запирается.

Таким макаром, потоки класса System.IO.Stream производят управление файлами на уровне отдельных байтов. Чтоб сделать операции чтения и Примеры создания проектов (приложений), записи более действенными, в пространстве имен System.IO имеются средства для открытия и отображения текстовых файлов. Так, к примеру, имеются классы StreamReader и StreamWriter, также объект My.Computer.FileSystem.

'Процедура чтения из текстового файла Sub readfile1(ByVal filename As String, ByRef p As String) 'создание потока для чтения из текстового файла Dim Rf As Примеры создания проектов (приложений), StreamReader Rf = New StreamReader(filename) Try p = Rf.ReadToEnd()'чтение текста из файла в p Rf.close()'закрытие потока Catch ex As Exception MsgBox("Нереально прочесть данные из файла") End Try End Sub

Рис. 4.10.2-1. Программный код процедуры readfile1()

чтения из текстового файла

Чтоб использовать классы StreamReader и StreamWriter, сначала программного Примеры создания проектов (приложений), кода проека следует добавить оператор доступа к этим классам: Imports System.IO.

'Процедура построчного чтения данных из текстового файла, 'подсчета числа строк и формирования строчки для вывода данных Sub readfile2(ByVal filename As String, _ ByRef n As Integer, ByRef p As String) 'создание потока для чтения из текстового файл Dim Примеры создания проектов (приложений), Rf As New StreamReader(filename) Dim line As String p = ""'строчка с начальными данными n = 0'количество строк в файле Try Do While Not Rf.EndOfStream() 'пока не достигнут конец потока line = Rf.ReadLine( )'чтение строчки из файла в line n = n + 1 : p = p & line & vbNewLine Loop Rf.Close Примеры создания проектов (приложений),() 'закрытие потока Catch ex As Exception MsgBox("Нереально прочесть данные из файла") End Try End Sub

Рис. 4.10.2-2. Программный код процедура readfile2()

построчного чтения данных из текстового файла и подсчета числа строк

Класс StreamReader из библиотеки .NET Framework позволяет откры­вать в программке и показывать текстовые файлы. На рис. 4.10.2-1 и
рис. 4.10.2-2 представлены Примеры создания проектов (приложений), процедуры чтения содержимого всего текстового файла полностью в одну строчку и построчного чтения данных из текстового файла. Обе эти процедуры имеют входной параметр filename (название файла) и выходной параметр p (строчка, содержащая значения, прочитанные из файла).

В примерах, представленных на рис. 4.10.2-1 и рис. 4.10.2-2, поначалу создаются объекты Rf класса StreamReader – потоки открываются для чтения. Дальше используются Примеры создания проектов (приложений), способы сделанных объектов: в примере на рис.4.10.3-1 способ ReadToEnd()считывает всю информацию из файла в строковую переменную p, начиная с текущей позиции (в данном примере с начала файла) и до конца файла; в примере на рис. 4.10.2-2 способ ReadLine()считывает из потока Rf только одну строчку знаков и присваивает Примеры создания проектов (приложений), ее содержимое строковой переменной line. Способ ReadLine()тут применяется в цикле, пока не будет достигнут конец потока (EndOfStream).

Способ Close() закрывает поток Rf и высвобождает все ресурсы, которые были связаны с этим объектом.

Класс StreamWriter из библиотеки классов позволяет создавать в программке новые текстовые файлы и записывать в их текстовые данные, также добавлять текстовые данные Примеры создания проектов (приложений), в имеющиеся текстовые файлы.

На рис. 4.10.2-3 и рис. 4.10.2-4 представлены процедура записи всей строчки в поновой сделанный текстовый файл, и процедура прибавления строчки в уже имеющийся файл. Обе процедуры в качестве входных характеристик принимают filename(строчка, содержащая путь файлу) и p –строчка, содержимое которой записывается в файл.

' Процедура записи строчки в Примеры создания проектов (приложений), поновой сделанный текстовый файл Sub writefile1(ByVal filename As String, ByVal p As String) 'проверка существования текстового файла с таким же именованием If File.Exists(filename)Then MsgBox("Файл " & filename & " уже существует") Exit Sub End If 'создание нового текст. файла и потока wf для записи в файл '1 метод Dim Примеры создания проектов (приложений), wf As StreamWriter = File.CreateText(filename) '2 метод Dim wf As New StreamWriter(filename) wf.WriteLine(p)'запись строчки в файл wf.Flush()'чистка буфера потока wf.Close()'закрытие потока End Sub

Рис. 4.10.2-3. Программный код процедура writefile1()

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

'Процедура прибавления строчки в уже имеющийся текстовый Примеры создания проектов (приложений), файл ' Если такового файла нет, то он создается Sub writefile2(ByVal filename As String, ByVal p As String) 'проверка существования текстового файла с таким же именованием If File.Exists(filename) = False Then MsgBox("Файл " & filename & " не существует") End If '1)Создание потока wf для прибавления строчки в конец файла 'Dim wf Примеры создания проектов (приложений), As StreamWriter = File.AppendText(filename) '2)Значение True 2-го параметра значит, что будет ' выполняться дозапись в конец файла Dim wf As New StreamWriter(filename, True) wf.WriteLine(p)'запись строчки в файл wf.Flush()'чистка буфера потока wf.Close()'закрытие потока End Sub

Рис. 4.10.2-4. Программный код процедура writefile2()

прибавления строчки Примеры создания проектов (приложений), в уже имеющийся текстовый файл

При разработке потока wf класса StreamWriter вторым методом может употребляться 2-ой аргумент, который определяет метод записи данных в файл. Если этот аргумент равен True, то строчка p добавляется в конец файла к уже существующему содержимому. Если 2-ой аргумент равен False либо отсутствует, то все содержимое файла (если оно Примеры создания проектов (приложений), существует) вполне стирается, и с начала файла записывается строчка p.

Таблица 4.10.2-1

Объект Описание
My.Application Информация, связанная с текущим приложением, включая заголовок, директории, номер версии.
My.Computer Информация об оборудовании, программном обеспечении и файлах, имеющихся на текущем (локальном) компьютере. My.Computer включает My.Computer.FileSystem, который ис­пользуется для открытия текстовых Примеры создания проектов (приложений), файлов и зашифрованных файлов системы.
My.Forms Информация о формах текущего проекта VS.
My.User Информация о текущем активном юзере из My.Computer.
My.WebServices Информация о веб-службах, активных в My.Computer, и ме­ханизм для доступа к новым веб-службам.

Место имен My– это средство резвого доступа Примеры создания проектов (приложений),, которое упрощает доступ к .NET Framework при выполнении нередко встречающихся задач, та­ких, как операции с формами, исследование содержимого компьютера и файловой системы, отображение инфы о текущих приложениях либо юзерах. Исходя из убеждений места имен My смотрится приблизительно, как еще одна библиотека классов, которая дублирует в той либо другой форме функциональность, уже Примеры создания проектов (приложений), присутствующую в .NET Framework.

Место имен My по функциональности разбито на несколько категорий, которые приведены в табл. 4.10.3-1.

Не считая того, место имен My – это просто метод резвого доступа к элементам .NET Framework, и все его способности можно узреть в окне Программный код с помощью технологии IntelliSense.

К примеру, чтоб показать окно сообщения, выводящее имя Примеры создания проектов (приложений), текущего компьютера и имя текущего юзера, нужно ввести:

MsgBox(My.User.Name)

Эта строчка производит вывод, соответственный рис. 4.10.2-5.

Рис. 4.10.2-5. Итог выполнения функции MsgBox(My.User.Name)

Объект My.Computer может показывать различную информацию о компьютере и его файлах. К примеру, последующий оператор показывает текущее системное время (локальная Примеры создания проектов (приложений), дата и время), определяемое ком­пьютером:

MsgBox(My.Computer. Clock. LocalTime)

Чтоб открыть имеющийся текстовый файл и вывести его содержимое в объект текстового поля, можно использовать объект My.Computer.FileSystem и способ ReadAllText( ).Программный код будет иметь вид, как на рис. 4.10.3-6.

'Процедура чтения данных из текстового файла 'полностью в одну строчку и вывод Примеры создания проектов (приложений), данных в TextBox Sub vvodFile(ByVal filename As String, _ ByRef Str As String, ByRef T As TextBox) 'Открываем имеющийся файл и загружаем его текстовое 'содержимое полностью в одну строчку Str Try Str = My.Computer.FileSystem.ReadAllText(filename) T.Text = Str Catch ex As Exception MsgBox("ошибка при чтении файла Примеры создания проектов (приложений),") End Try End Sub

Рис. 4.10.2-6. Программный код процедура vvodFile()

чтения данных из текстового файла полностью в одну строчку

Способ ReadAllText()копирует все содержимое обозначенного текстового файла в строковую переменную либо объект (в этом случае, переменную с именованием Str), что исходя из убеждений производительно­сти и времени написания кода Примеры создания проектов (приложений), резвее, чем чтение файла по одной строке .

Благодаря этому фактору объект My.Computer.FileSystem предоставляет прекрасный метод стремительно запрограммировать распространенные задачки. Относительно этой новейшей функции и вероятных методов ее внедрения принципиально отметить, что тут объект My.Computer.FileSystem полезен поэтому, что читается весь текстовый файл. Но класс StreamReader предлагает боль­ше способностей, чем Примеры создания проектов (приложений), реализация объекта My, и в особенности это касается способности обрабатывать файлы построчно. Эта возможность является очень принципиальной при выполнении сортиров­ки и лексического разбора. Так что идеальнее всего знать оба способа открытия и сотворения текстовых файлов. Какой из их будет употребляться при программировании, находится в зависимости от ре­шаемой задачки и Примеры создания проектов (приложений), того, как ваш код будет употребляться.

Чтоб сделать новый файл либо добавить данные в имеющийся текстовый файл, можно использовать объект My.Computer.FileSystemи способ WriteAllText( ).Программный код будет иметь вид, как на рис. 4.10.2-7.

В способе WriteAllText()3-ий аргумент определяет метод записи данных. Если указать True, то данные добавляются в конец Примеры создания проектов (приложений), имеющихся данных файла; если же указать False, то в случае существования данных в файле они вполне заменяются новыми данными (файл перезаписывается).

'Процедура записи строчки в текстовый файл Sub vivodFile(ByVal filename As String, ByRef S As String) 'Запись строки-результата S в текстовый файл; значение (False) 'параметра задает,что файл Примеры создания проектов (приложений), будет перезаписан. Try My.Computer.FileSystem.WriteAllText(filename, S, False) Catch ex As Exception MsgBox("ошибка при сохранении (разработке) файла") End Try End Sub

Рис. 4.10.2-7. Программный код процедуры vivodFile()

записи строчки в текстовый файл

Примеры сотворения проектов (приложений),


primernaya-programma-naimenovanie-disciplini-zoologiya-rekomenduetsya-dlya-napravleniya-podgotovki.html
primernaya-programma-obucheniya-prizhkam-cherez-skakalku.html
primernaya-programma-obucheniya.html