Уроки по созданию приложений для Windows в Visual Studio 2010 .Net (C#)
- Муслимова А. Г.
- Уроки по созданию приложений для Windows в MS Visual Studio 2010 .Net (C#)
- Просмотров: 4815
MS Visual Studio 2010. Классы работы с файловой системой
Платформа .NET Framework имеет мощные средства для работы с файловой системой и позволяет достаточно легко манипулировать файлами и папками, создавать, удалять и модифицировать их. Данное приложение показывает работу с некоторыми из этих классов.
Классы работы с файловой системой находятся в пространстве имен System.IO (сборка mscorlib.dll). IO – сокращение от английского Input/Output (ввод/вывод, запись/чтение).
Пространство имен System.IO содержит классы для работы с каталогами и дисками, такие как: DriveInfo, Directory, DirectoryInfo. Классы для работы с файлами: File, FileInfo. Класс для работы с путями: Path. Помимо этого System.IO содержит основные классы для работы с потоками: Stream, FileStream, StreamReader, StreamWriter, StringReader, StringWriter, TextReader, TextWriter, BinaryReader, BinaryWriter и MemoryStream. Для облегчения жизни программистов в .NET Framework есть специальные статичные классы, такие как File и Directory, которые имеют готовые, часто используемые функции и методы манипуляций с каталогами и файлами.
На главной форме размещаем элементы управления: ListBox и 6 кнопок.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO; //Это мы добавили
namespace FileInputOutput
{
public partial class Form1 : Form
{
string winDir = System.Environment.GetEnvironmentVariable("windir"); //%windir% - каталог, в который установлена ОС Windows.
public Form1()
{
InitializeComponent();
}
private void addListItem(string value)
{
this.listBox1.Items.Add(value);
}
private void button1_Click(object sender, EventArgs e)
{
/*В следующем примере кода используется класс StreamReaderдля чтения файла System.ini. Содержимое файла добавляется в элемент управления ListBox .
Блок try... catch используется для обработки исключительной ситуации - предупреждения программы, если он пуст. Существует множество способов,
чтобы определить, когда будет достигнут конец файла; в этом примере используется метод Peek */
listBox1.Items.Clear();
StreamReader reader = new StreamReader(winDir + "\\system.ini");
try
{
do
{
addListItem(reader.ReadLine());
}
while (reader.Peek() != -1);
}
catch
{
addListItem("File is empty");
}
finally
{
reader.Close();
}
}
private void button2_Click(object sender, EventArgs e)
{
/*Этот пример кода использует класс StreamWriter
для создания и записи в файл. Если имеется
существующий файл, можно открыть его таким же образом.*/
StreamWriter writer = new StreamWriter("d:\\KBTest.txt");
writer.WriteLine("Файл создан используя класс StreamWriter.");
writer.Close();
listBox1.Items.Clear();
addListItem("Файл записан в D:\\KBTest.txt");
}
private void button3_Click(object sender, EventArgs e)
{
/*Этот пример кода использует объект FileInfo для доступа к свойствам файлов. В этом примере используется Notepad.exe. Свойства отображаются
в элементе управления ListBox . */
listBox1.Items.Clear();
FileInfo FileProps = new FileInfo(winDir + "\\notepad.exe");
addListItem("File Name = " + FileProps.FullName);
addListItem("Дата создания = " + FileProps.CreationTime);
addListItem("Последнее время доступа = " + FileProps.LastAccessTime);
addListItem("Последнее время записи = " + FileProps.LastWriteTime);
addListItem("Размер = " + FileProps.Length);
FileProps = null;
}
private void button4_Click(object sender, EventArgs e)
{
/*Этот пример кода использует классы каталог и диск
для логических дисков в системе. В этом образце
результаты отображаются в элементе управления ListBox */
listBox1.Items.Clear();
string[] drives = Directory.GetLogicalDrives();
foreach (string drive in drives)
{
addListItem(drive);
}
}
private void button5_Click(object sender, EventArgs e)
{
/*Этот пример кода использует метод GetDirectories
класса Directory для получения списка папок. */
listBox1.Items.Clear();
string[] dirs = Directory.GetDirectories(winDir);
foreach (string dir in dirs)
{
addListItem(dir);
}
}
private void button6_Click(object sender, EventArgs e)
{
/*Этот пример кода использует метод GetFiles
класса Directory для получения списка файлов */
listBox1.Items.Clear();
string[] files = Directory.GetFiles(winDir);
foreach (string i in files)
{
addListItem(i);
}
}
}
}