Работа с файловой системой

Содержание

Слайд 2

В пространстве имен System.IO предусмотрено четыре класса, которые предназначены для работы

В пространстве имен System.IO предусмотрено четыре класса, которые предназначены для работы

с файловой системой компьютера.
Directory и Fi1е реализуют свои возможности с помощью статических методов, поэтому данные классы можно использовать без создания соответствующих объектов (экземпляров классов).
DirectoryInfo и FileInfo обладают схожими функциональными возможностями c Directory и Fi1е, но порождены от класса FileSystemInfo и поэтому реализуются путем создания соответствующих экземпляров классов.
Слайд 3

Работа с каталогами Абстрактный класс FileSystemInfo В FileSystemInfo предусмотрено несколько методов:

Работа с каталогами Абстрактный класс FileSystemInfo

В FileSystemInfo предусмотрено несколько методов:
метод Delete() -

позволяет удалить объект файловой системы с жесткого диска
Refresh() — обновить информацию об объекте файловой системы.
Слайд 4

Некоторые свойства FileSystemInfo

Некоторые свойства FileSystemInfo

Слайд 5

Класс DirectoryInfo Наследует члены класса FileSystemInfo и содержит дополнительный набор членов,

Класс DirectoryInfo

Наследует члены класса FileSystemInfo и содержит дополнительный набор членов, которые предназначены

для :
создания,
перемещения,
удаления,
получения информации о каталогах и подкаталогах в файловой системе.
Слайд 6

Класс DirectoryInfo

Класс DirectoryInfo

Слайд 7

Тип DirectoryInfo создаем экземпляр класса (объект), указывая при вызове конструктора в

Тип DirectoryInfo

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

качестве параметра путь к нужному каталогу
 /*Создаем объект DirectoryInfo, которому будет обращаться к текущему каталогу*/
DirectoryInfo dir1 = new DirectoryInfo(".");
/*Создаем объект DirectoryInfo, которому будет обращаться к каталогу d:\prim*/
DirectoryInfo dir2 = new DirectoryInfo(@"d:\prim");
Если создается объект DirectoryInfo и связывается с несуществующим каталогом, то будет сгенерировано исключение System.IO.DirectoryNotFoundException.
Слайд 8

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 {

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
//создаем объект DlrectoryInfo, который связан с

каталогом d:\БГУИР, выводим информацию о каталоге
class Program {
static void Main(string[] args) {
DirectoryInfo dir = new DirectoryInfo(@"d:\БГУИР");
Console.WriteLine("***** "+dir.Name+" *****");
Console.WriteLine("FullName: {0}", dir.FullName);
Console.WriteLine("Name: {0}", dir.Name);
Console.WriteLine("Parent: {0}", dir.Parent);
Console.WriteLine("Creation: {0}", dir.CreationTime);
Console.WriteLine("Attributes: {0}", dir.Attributes.ToString());
Console.WriteLine("Root: {0}", dir.Root);
} } } }
Слайд 9

Свойство Attributes позволяет получить информацию об атрибутах объекта файловой системы

Свойство Attributes позволяет получить информацию об атрибутах объекта файловой системы

Слайд 10

//Через DirectoryInfo можно не только получать доступ к информации о текущем

//Через DirectoryInfo можно не только получать доступ к информации о текущем

каталоге, но получить доступ к информации о его подкаталогах
class Program {
static void printDirect(DirectoryInfo dir) {
Console.WriteLine("***** " + dir.Name + " *****");
Console.WriteLine("FullName: {0}", dir.FullName);
Console.WriteLine("Name: {0}", dir.Name);
Console.WriteLine("Parent: {0}", dir.Parent);
Console.WriteLine("Creation: {0}", dir.CreationTime);
Console.WriteLine("Attributes: {0}", dir.Attributes.ToString());
Console.WriteLine("Root: {0}", dir.Root);
}
static void Main(string[] args) {
DirectoryInfo dir = new DirectoryInfo(@"d:\БГУИР");
printDirect(dir);
DirectoryInfo[] subDirects = dir.GetDirectories();
Console.WriteLine("Найдено {0} подкаталогов", subDirects.Length);
foreach (DirectoryInfo d in subDirects)
{ printDirect(d); }
}
}
Слайд 11

Слайд 12

Метод CreateSubdirectory() позволяет создать в выбранном каталоге как единственный подкаталог, так

Метод CreateSubdirectory()

позволяет создать в выбранном каталоге как единственный подкаталог, так

и множество подкаталогов (в том числе, и вложенных друг в друга).
Создадим в каталоге несколько дополнительных подкаталогов:
DirectoryInfo dir = new DirectoryInfo(@"d:\БГУИР");
dir.CreateSubdirectory("doc"); //создали подкаталог
dir.CreateSubdirectory(@"book\2012"); //создали вложенный подкаталог
Слайд 13

Метод MoveTo() позволяет переместить текущий каталог по заданному в качестве параметра

Метод MoveTo()

позволяет переместить текущий каталог по заданному в качестве параметра

адресу. При этом возможно произвести переименование каталога.
DirectoryInfo dir = new DirectoryInfo( @"d:\БГУИР\bmp");
dir.( @"d:\БГУИР\ggg\bmp");
В данном случае каталог bmp перемещается в по адресу d:\БГУИР\ggg\bmp
Так как имя перемещаемого каталога совпадает с крайним правым именем в адресе нового местоположения каталога, то переименования не происходит.
//переименование текущего каталога:
DirectoryInfo dir = new DirectoryInfo(@"d:\БГУИР\ggg");
dir.MoveTo(@"d:\БГУИР\archive");
Замечания.
Удаление каталога возможно только тогда, когда он пуст.
На практике комбинируют использование классов Directory и DirectoryInfo.
Слайд 14

Работа с файлами Класс Filelnfo предназначен для организации доступа к физическому

Работа с файлами  Класс Filelnfo

предназначен для организации доступа к физическому файлу, который

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

Класс FileInfo наследует члены класса FileSystemInfo и содержит дополнительный набор членов

Класс FileInfo наследует члены класса FileSystemInfo и содержит дополнительный набор членов

Слайд 16

class Program { static void Main(){ //создаем новый файл и связываем

class Program {
static void Main(){
//создаем новый файл и связываем с

ним строковый поток
FileInfo f = new FileInfo("text.txt");
StreamWriter fOut = new StreamWriter(f.Create());
//записываем в файл данные и закрываем строковый поток,
// при этом связь с физическим файлом для f не рвется
fOut.WriteLine("ОДИН ДВА ТРИ...");
fOut.Close();
//получаем информацию о файле
Console.WriteLine("*******" + f.Name+ "******************");
Console.WriteLine("File size: {0}", f.Length);
Console.WriteLine("Creation: {0}", f.CreationTime);
Console.WriteLine("Attributes: {0}", f.Attributes.ToString());}
}
Слайд 17

using System; using System.Text; using System.IO; //для работы с файловым вводом-выводом

using System;
using System.Text;
using System.IO; //для работы с файловым вводом-выводом

using System.Text.RegularExpressions;
namespace ConsoleApplication1 {
class Program {
// пример по удалению файлов:
static void printFile(FileInfo file) {
Console.WriteLine("***** " + file.Name + " *****");
Console.WriteLine("File size: {0}", file.Length);
Console.WriteLine("Creation: {0}", file.CreationTime);
Console.WriteLine("Attributes: {0}", file.Attributes.ToString());
}
static void Main(string[] args) {
DirectoryInfo dir = new DirectoryInfo(@"d:\БГУИР\ggg");
FileInfo[] files = dir.GetFiles();
if (files.Length != 0)
{
Console.WriteLine("Найдено {0} файла", files.Length);
foreach (FileInfo f in files)
{ printFile(f); f.Delete(); }
Console.WriteLine("\nТеперь в каталоге содержится {0} файлов и можно его удалить",
dir.GetFiles().Length);
dir.Delete();
}
} } }
Слайд 18