- Раздел 2 Основы работы с файлами и директориями в C#
- Глава 1 Использование контролов OpenFileDialog и SaveFileDialog для работы с файлами
- Параграф 1 Ипользование контрола OpenFileDialog
- Основные свойства OpenFileDialog
- Загрузка содержимого файла с использованием OpenFileDialog
- Параграф 2 Ипользование контрола SaveFileDialog
- Основные свойства SaveFileDialog
- Сохранение информации в файл с использованием SaveFileDialog
- Windows form работа с файлами
- Как открыть файлы с помощью OpenFileDialog How to: Open files with the OpenFileDialog
- Пример. чтение файла в виде потока с помощью StreamReader Example: Read a file as a stream with StreamReader
- Пример. Открытие файла из отфильтрованного выделенного фрагмента с помощью OpenFile Example: Open a file from a filtered selection with OpenFile
Раздел 2 Основы работы с файлами и директориями в C#
Глава 1 Использование контролов OpenFileDialog и SaveFileDialog для работы с файлами
Для изучения работы с контролами OpenFileDialog и SaveFileDialog создадим новое решение (подробно о создании проекта решения было раказано в первом разделе книги) или изменим уже ипользованный проект (убрав коды обработчиков событий нажатия кнопок, изменив надписи и картиночки) и поместим на форму контролы RichTextBox, OpenFileDialog и SaveFileDialog. Контролы OpenFileDialog и SaveFileDialog не визуальные и, потому, разместились ниже формы. Проект решения с которым будем работать примет вид, показанный на Рис.1.
Рис.1 Проект решения для работы с OpenFileDialog и SaveFileDialog
Дважды кликнем на форме (вне контролов) и, таким образом, создадим обработчик Form1_Load, который будет вызываться при каждой загрузки формы и который в дальнейшем будем часто использовать для начальной инициализации параметров программы и переменных. В обработчике запишем код очистки RichTextBox:
Обработчик нажатия кнопки 3 оставим прежний:
Параграф 1 Ипользование контрола OpenFileDialog
Основные свойства OpenFileDialog
Свойство AddExtension разрешает или запрещает автоматическое добавление расширение, указанное в свойстве DefaultExt.
Свойство DefaultExt — расширение, принятое по умолчанию для автоматического добавления к имени файла при AddExtension=true.
Свойство CheckFileExists — используется для получения или устанавки значения, указывающего отображать или нет диалоговое окно предупреждения, если пользователь указал в свойстве FileName имя файла, которого не существует в данной директории и нажал кнопку «Oткрыть» при невыбранном кликом мышки файле. При CheckFileExists=true вместо прерывания будет выдано сообщение, что такого файла нет и исключения не вызывается.
На Рис.2 показано окно предупреждение при FileName=a.doc, CheckFileExists=true и нажатии кнопки «Oткрыть» при невыбранном файле.
Рис.2 Окно предупреждения при CheckFileExists=true
Свойство FileName — имя файла по умолчанию для выборки если была нажата кнопка OK и не выбрн кликом мышки файл в окне диалога.
Свойство CheckPatchExists — используется для получения или устанавки значения, указывающего отображать или нет диалоговое окно предупреждения, если пользователь указал в свойстве FileName имя файла с несуществующим именем директории. Окно полностью анлогично показанному на Рис.2., например, при FileName=С:\3\a.doc и не выбранном файле в директории C:\ и нажатии кнопки «Oткрыть» будет выдано сообщение, поазанное на Рис.3. При CheckPatchExists=true вместо прерывания будет выдано только сообщение.
Рис.3 Окно предупреждения при CheckPatchExists=true
Свойство DereferenceLinks — используется для указания контролу что именно возвращпть при выборе файла ссылки — файл по ссылке (true) или файл самой сылки (false).
Свойства Filter, FilterIndex — фильтр для выбираемых файлов и индекс строки, отображаемой в окошечке «Имя файла». Например значение свойства заданного строкой при FilterIndex=1.
позволит выбрать только текстовые файлы в формате rtf или txt. В окошечке «Тип файла» будет только две строки:
а в окошечке «Имя файла» будет отображена первая.
Свойство InitialDirectory — директория, которая выбирается при старте OpenFileDialog.
Свойство MultiSelect — при значении true позволяет выбрать мышкой при нажатой кнопке Shift или Ctrl несколько файлов и сохранить их имена в свойстве FileNames в виде массива строк.
Свойство ReadOnlyChecked — при значении true позволяет открывать команде OpenFile выбранные файлы только в режиме чтения.
Свойство RestoreDirectory — при true диалоговое окно восстанавливает текущий каталог к первоначальному значению если пользователь изменил каталог при поиске файлов, при false — нет.
Свойство работает только если закрыт поток Stream, созданный методом openFileDialog1.OpenFile().
Свойство ShowHelp — при значении true в окне диалога отображается кнопка «Справка».
Свойство ShowReadOnly — при значении true в окне диалога отображается переключатель «Только для чтения».
Свойство Title — заголовок диалогового окна.
Свойство ValidateNames — при true проверяет допустимость имени для файла применительно к Win32. Никакое заданное по умолчанию в этом случае не добавляется.
Отметим, что ве свойcтва могут быть заданы на этапе проектирования и программно — путем присвоения соответствующих значений.
Загрузка содержимого файла с использованием OpenFileDialog
Утановим для OpenFileDialog следующие значения свойств:
Filter — rtf файлы (*.rtf)|*.rtf
Пометим в директорию C:\ какой либо файл в формате .rtf (например который был создан в первом разделе «a.tf») и загрузим его в RichTextBox. Для этого напишем в обработчике нажатия кнопки 1 следующий код:
Ели мы выбрали файл C:\a.rtf, то это имя отобразится в заглавии формы.
Если теперь в войстве FileName запишем a.rtf, то при открытии диалога буковка «a» появляется в окошечке «Имя файла» и можно выполнить загрузку не выбирая мышкой файл, а сразу нажав кнопочку «OK».
Дотаточно в войстве FileName записать a.doc и повторить то, что только что проделали выше, как получим предупреждение об отсутствии файла (см Рис.2) и файл уже придется выбирать кликом мышки (кстати, отетим еще раз, что если утановить войство CheckFileExists в false то получим возбуждение иключения).
Рассмотрим еще один способ, который позволяет загружать фйлы в формате .txt. Добавим на форму контрол TextBox и установим его свойство MultiLine в true, в обработчике Form1_Load допишем строку
а cвойству Filter присвоим значение
В обработчике события нажатия кнопки 1 напишем код для чтения текстовых файлов.
Ели прочитаем текстовый файл в формате .rtf, то увидим уже знакомое нам по первому разделу содержимое файла, а при чтении текстового файла в формате .txt именно текст (см Рис.4).
Рис.4 Чтение файлов в формате .rtf(сле) и.txt(спрва) в ткстовом режиме
Параграф 2 Ипользование контрола SaveFileDialog
Основные свойства SaveFileDialog
Следует отметить, что все свойства отображаемые в окне Proporties для SaveFileDialog аналогичны OpenFileDialog и имеют тоже назначение и тот же принцип использования, и, поэтому, в отдельном их расмотрении нет необходимости.
Сохранение информации в файл с использованием SaveFileDialog
Уcтановим для SaveFileDialog следующие значения свойств:
Filter — rtf файлы (*.rtf)|*.rtf|txt файлы(*.txt)|*.txt
Последнее актуально именно для SaveFileDialog и позволяет не задавать в окошечке «имя файла» полное имя если файл будет сохраняться как .rtf файл.
Для обработчика события нажатия кнопки 2 нпишем следующий код:
Windows form работа с файлами
Уроки Windows Forms C++/C#
Открытие и запись текстового файла в MVS C++
В этом уроке будет показан пример создания простого текстового редактора, поэтому обязательно посмотрите предыдущий урок. В данной программе мы будем открывать какой-то уже созданный текстовый файл и редактировать его или же сами писать текст и сохранять его, как новый текстовый файл в нужную вам папку. Ещё один явный признак текстового редактора – это если вы что-то написали и нажимайте крестик чтобы выйти – при этом программа спрашивает: “Сохранить изменения”. Создание такого текстового редактора как раз и будет рассматриваться в этом уроке. Для этого понадобяться следующие элементы: «MenuStrip», «textBox», «openFiledialog», «saveFiledialog». Работа с последними двумя рассматривается в “этом уроке”. Перетащите все эти элементы на форму, назовите заголовок «MenuStrip» «Файл» создайте в нём три пункта: «Открыть», «Сохранить как», «Выход», привяжите «textBox» ко всем сторонам формы, если не знаете включите «Multeline» и «ScrollBars->Vertical», как делать всё выше описанное посмотрите этот урок.Оформление программы:
В коде программы будут созданы «MyReader» и «MyWriter» , с помощью которых программа будет читать и записывать текст в файл. По мимо этого в коде создаётся кодировка, благодаря которой программа будет понимать русский текст. У формы нужно вызвать событие «FormClousing», о том как вызвать событие у элемента рассказывается в этом уроке. Код программы:
#pragma endregion private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) < this->Text = «Текстовый редактор»; openFileDialog1->FileName = «D:\\ВУЗ\\Text2.txt»; openFileDialog1->Filter = «Текстовые файлы (*.txt)|*.txt|All files (*.*)|*.*»; saveFileDialog1->Filter = «Текстовые файлы (*.txt)|*.txt|All files (*.*)|*.*»; > private: System::Void открытьToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) < openFileDialog1->ShowDialog(); if (openFileDialog1->FileName == nullptr) return; try < auto MyReader = gcnew IO::StreamReader(openFileDialog1->FileName, System::Text::Encoding::GetEncoding(1251)); textBox1->Text= MyReader->ReadToEnd(); MyReader->Close(); > catch (IO::FileNotFoundException^ Ситуация) < MessageBox::Show(Ситуация->Message + «\nФайл не найден», «Ошибка», MessageBoxButtons::OK, MessageBoxIcon::Exclamation); > catch (Exception^ Ситуация) < MessageBox::Show(Ситуация->Message, «Ошибка», MessageBoxButtons::OK, MessageBoxIcon::Exclamation); > > private: System::Void сохранитьКакToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) < saveFileDialog1->FileName = openFileDialog1->FileName; if (saveFileDialog1->ShowDialog() == Windows::Forms::DialogResult::OK) Save(); > void Save() < try < // Создание экземпляра StreamWriter для записи в файл: auto MyWriter = gcnew IO::StreamWriter(saveFileDialog1->FileName, false, System::Text::Encoding::GetEncoding(1251)); MyWriter->Write(textBox1->Text); MyWriter->Close(); textBox1->Modified = false; > catch (Exception^ Ситуация) < MessageBox::Show(Ситуация->Message, «Ошибка», MessageBoxButtons::OK, MessageBoxIcon::Exclamation); > > private: System::Void выходToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) < this->Close(); > private: System::Void Form1_FormClosing(System::Object^ sender, System::Windows::Forms::FormClosingEventArgs^ e) < if (textBox1->Modified == false) return; auto MeBox = MessageBox::Show(«Текст был изменён. \nСохранить изменения?», «Простой редактор», MessageBoxButtons::YesNoCancel, MessageBoxIcon::Exclamation); if (MeBox == Windows::Forms::DialogResult::No) return; if (MeBox == Windows::Forms::DialogResult::Cancel) e->Cancel = true; if (MeBox == Windows::Forms::DialogResult::Yes) < if (saveFileDialog1->ShowDialog() == Windows::Forms::DialogResult::OK) < Save(); return; >else e->Cancel = true; > > >; >
Результат:
Следующий урок >>
Как открыть файлы с помощью OpenFileDialog How to: Open files with the OpenFileDialog
System.Windows.Forms.OpenFileDialogКомпонент открывает диалоговое окно Windows для обзора и выбора файлов. The System.Windows.Forms.OpenFileDialog component opens the Windows dialog box for browsing and selecting files. Чтобы открыть и прочитать выбранные файлы, можно использовать OpenFileDialog.OpenFile метод или создать экземпляр System.IO.StreamReader класса. To open and read the selected files, you can use the OpenFileDialog.OpenFile method, or create an instance of the System.IO.StreamReader class. В следующих примерах показаны оба подхода. The following examples show both approaches.
В .NET Framework для получения или задания FileName свойства требуется уровень привилегий, предоставляемый System.Security.Permissions.FileIOPermission классом. In .NET Framework, to get or set the FileName property requires a privilege level granted by the System.Security.Permissions.FileIOPermission class. В примерах выполняется FileIOPermission Проверка разрешений и может вызываться исключение из-за недостаточных привилегий при выполнении в контексте частичного доверия. The examples run a FileIOPermission permission check, and can throw an exception due to insufficient privileges if run in a partial-trust context. Дополнительные сведения см. в статье основы управления доступом для кода. For more information, see Code access security basics.
Вы можете собрать и запустить эти примеры как .NET Framework приложения из командной строки C# или Visual Basic. You can build and run these examples as .NET Framework apps from the C# or Visual Basic command line. Дополнительные сведения см. в разделе Построение из командной строки с помощью csc.exe или Сборка из командной строки. For more information, see Command-line building with csc.exe or Build from the command line.
Начиная с .NET Core 3,0, можно также создавать и запускать примеры как приложения Windows .NET Core из папки с файлом проекта .NET Core Windows Forms . csproj . Starting with .NET Core 3.0, you can also build and run the examples as Windows .NET Core apps from a folder that has a .NET Core Windows Forms .csproj project file.
Пример. чтение файла в виде потока с помощью StreamReader Example: Read a file as a stream with StreamReader
В следующем примере используется Button обработчик событий Windows Forms элемента управления Click для открытия OpenFileDialog с помощью ShowDialog метода. The following example uses the Windows Forms Button control’s Click event handler to open the OpenFileDialog with the ShowDialog method. После того как пользователь выберет файл и нажмет кнопку ОК, экземпляр StreamReader класса считывает файл и отображает его содержимое в текстовом поле формы. After the user chooses a file and selects OK, an instance of the StreamReader class reads the file and displays its contents in the form’s text box. Дополнительные сведения о чтении из файловых потоков см FileStream.BeginRead . в разделе и FileStream.Read . For more information about reading from file streams, see FileStream.BeginRead and FileStream.Read.
Пример. Открытие файла из отфильтрованного выделенного фрагмента с помощью OpenFile Example: Open a file from a filtered selection with OpenFile
В следующем примере Button обработчик событий элемента управления используется Click для открытия OpenFileDialog с фильтром, который отображает только текстовые файлы. The following example uses the Button control’s Click event handler to open the OpenFileDialog with a filter that shows only text files. После того как пользователь выберет текстовый файл и нажмет кнопку ОК, OpenFile для открытия файла в блокноте используется метод. After the user chooses a text file and selects OK, the OpenFile method is used to open the file in Notepad.