Top.Mail.Ru

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);

            }

        }

    }

}