- Работа с файловой системой в C#. Работа с файлами (классы File и FileInfo)
- DirectoryInfo (продолжение)
- Класс FileInfo
- Как в C# создать файл и записать в него данные?
- Как в C# получить информацию о файле?
- Как в C# переместить файл в новое место?
- Как в C# копировать файл?
- Как в C# удалить файл?
- Класс File
- Итого
- Типы и расширения файлов в Visual Studio для с#
- 14. Операции с файлами.
- Получение имени файла
- Удаление файла
- Перемещение файла
- Копирование файла
- Запись всего текста в файл
- Дописать текст в конец файла
- Использование потоков
- Чтение файла
- Запись в файл
- Пример работы с File
- results matching » «
- No results matching » «
Работа с файловой системой в C#. Работа с файлами (классы File и FileInfo)
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Аналогично тому, как организована работа с каталогами в C#, для работы с файлами в пространстве имен System.IO предусмотрено два класса для работы с файлами — File и FileInfo . Рассмотрим как можно использовать эти классы при работе с файловой системой в C#. Однако, прежде, чем мы приступим к рассмотрению функциональности новых классов, необходимо рассмотреть вопрос о том, как получить список файлов в определенном каталоге.
DirectoryInfo (продолжение)
При рассмотрении вопросов, связанных с работой с каталогами файловой системы в C# мы оставили не рассмотренным вопрос о том, как получить список файлов в директории. Рассмотрим этот вопрос сейчас. В самом простом случае, мы можем воспользоваться методом GetFiles() , например, так:
using System; using System.IO; namespace FileSystem < class Program < static void Main(string[] args) < string root = @"C:\"; try < DirectoryInfo directory = new DirectoryInfo(root); FileInfo[] files = directory.GetFiles(); foreach (FileInfo file in files) < Console.WriteLine(file.FullName); >> catch (Exception ex) < Console.WriteLine(ex.Message); >> > >
В этом случае программа выдаст нам список всех файлов находящихся в определенном каталоге. В приведенном выше примере вывод консоли будет примерно следующим:
То есть, при использовании метода GetFiles() без параметров просматривается только конкретный каталог. У метода GetFiles() имеется ряд переопределенных версий, позволяющих организовать поиск вглубь для того, чтобы вывести список файлов, находящихся не только в конкретном каталоге, но и во всех поддиректориях. Например, просмотрим все файлы в каталоге C:\Program Files (x86)
string root = @"c:\Program Files (x86)\"; try < DirectoryInfo directory = new DirectoryInfo(root); FileInfo[] files = directory.GetFiles("*.*",SearchOption.AllDirectories); foreach (FileInfo file in files) < Console.WriteLine(file.FullName); >> catch (Exception ex) < Console.WriteLine(ex.Message); >>
Здесь мы воспользовались переопределенной версией метода GetFiles() у которого первый параметр представляет собой маску по которой будут искаться файлы (например, мы могли бы задать вот такую маску для поиска только текстовых файлов — « *.txt «), а второй параметр — настройки поиска (в нашем случае — это SearchOption.AllDirectories , что указывает на то, что поиск будет вестись по всех каталогам).
Отдельное внимание стоит уделить такому моменту: если вы попытаетесь провести поиск как в примере по всем каталогам на диске C:\ , то можете столкнуться ситуацией, когда программа вместо списка файлов выдаст вам исключение типа «Access to the path ‘c:\Documents and Settings’ is denied.» Это связано с тем, что для каждой директории в Windows можно установить права доступа для определенных пользователей и наша программа на C# не может зайти в директорию так как не обладает достаточными для этого правами. Самый простой способ избежать это исключение состоит в том, чтобы организовать свой рекурсивный обход дерева каталогов. Этот момент мы с вами также рассмотрим в последующих статьях. Ну а теперь перейдем непосредственно к нашей теме.
Класс FileInfo
Ниже представлены наиболее часто используемые свойства и методы работы с файлами посредством класса FileInfo :
- CopyTo(path) — копирует файл в новое место по указанному пути path
- Create() — создает файл
- Delete() — удаляет файл
- MoveTo(destFileName) — перемещает файл в новое место
- Свойство Directory — получает родительский каталог в виде объекта DirectoryInfo
- Свойство DirectoryName — получает полный путь к родительскому каталогу
- Свойство Exists — указывает, существует ли файл
- Свойство Length — получает размер файла в байтах
- Свойство Extension — получает расширение файла
- Свойство Name — получает имя файла
- Свойство FullName — получает полное имя файла
Как в C# создать файл и записать в него данные?
Для создания нового файла и записи в него данных можно воспользоваться методом Create() :
using System; using System.IO; using System.Text; namespace FileSystem < class Program < static void Main(string[] args) < try < FileInfo fileInfo = new FileInfo(@"c:\CSharp Output\MyFile.txt"); FileStream fs = fileInfo.Create(); fs.Write(Encoding.UTF8.GetBytes("Привет, мир!")); fs.Close(); >catch (Exception ex) < Console.WriteLine(ex.Message); >> > >
Или же, если мы точно знаем, что нам необходим текстовый файл, то воспользоваться методом CreateText() :
using System; using System.IO; namespace FileSystem < class Program < static void Main(string[] args) < try < FileInfo fileInfo = new FileInfo(@"c:\CSharp Output\MyFile.txt"); StreamWriter sw = fileInfo.CreateText(); sw.WriteLine("Привет, мир!"); sw.Close(); >catch (Exception ex) < Console.WriteLine(ex.Message); >> > >
В отличие от Create() метод CreateText() возвращает нам объект типа StreamWriter , который предоставляет удобные методы и свойства для работы в том числе и со строками, поэтому во втором примере нам не понадобилось преобразовывать строку в массив байтов для записи в файл. В свою очередь, метод Create() удобно использовать для записи бинарных файлов.
Как в C# получить информацию о файле?
Чтобы получить информацию о файле мы можем воспользоваться свойствами класса FileInfo , например, как показано ниже:
try < FileInfo fileInfo = new FileInfo(@"c:\CSharp Output\MyFile.txt"); Console.WriteLine($"Полное имя файла: "); Console.WriteLine($"Дата создания: "); Console.WriteLine($"Дата последнего доступа: "); Console.WriteLine($"Дата последней записи в файл: "); Console.WriteLine($"Размер файла: "); Console.WriteLine($"Имя файла: "); Console.WriteLine($"Директория в которой содержится файл: "); > catch (Exception ex)
Как в C# переместить файл в новое место?
Для перемещения файла в другой каталог в C# используется метод MoveTo() :
string path = @»c:\CSharp Output\MyFile.txt»; string newPath = @»c:\CSharp Output\SubDir\MyFile.txt»; FileInfo fileInf = new FileInfo(path); if (fileInf.Exists)
Перед тем, как перемещать файл в другой каталог необходимо обязательно проверить существование этого каталога на диске и, если каталог отсутствует, то создать его, иначе мы получим исключение.
Как в C# копировать файл?
Копирование файла в C# осуществляется с помощью метода CopyTo() :
string path = @»c:\CSharp Output\MyFile.txt»; string newPath = @»c:\CSharp Output\SubDir\MyFile.txt»; FileInfo fileInf = new FileInfo(path); if (fileInf.Exists)
Методы CopyTo() и MoveTo() класса FileInfo также имет переопределенные версии в которых вторым параметром выступает параметр булевого типа ( bool ) который указывает на то, необходимо ли перезаписать содержимое файла, если он уже содержится по указанному пути. Если этот параметр равен false (или используется метод с одним параметром), то при обнаружении по новому пути указанного файла C# сгенерирует исключение.
Как в C# удалить файл?
Для удаления файла с диска в C# используется метод Delete() :
string path = @»c:\CSharp Output\MyFile.txt»; FileInfo fileInf = new FileInfo(path); if (fileInf.Exists)
Класс File
Класс File реализует схожую с FileInfo функциональность, однако, как и в случае работы с каталогами, этот класс рекомендуется использовать если вам необходима проверка безопасности используемых методов по работе с файлом и вы не планируете использовать класс многократно. Основные методы работы с файлами в C# с использованием класса File следующие:
- Copy() — копирует файл в новое место
- Create() — создает файл
- Delete() — удаляет файл
- Move() — перемещает файл в новое место
- Exists(file) — определяет, существует ли файл
Подробно описывать работу каждого методы не будем, так как они реализуют ровно те же операции, что и в классе FileInfo .
Итого
Рассмотрели работу с файлами в C#, остановившись подробнее на работе с классом FileInfo . Научились создавать файлы и записывать в них данные, перемещать, копировать и удалять файлы в C#, а также получать информацию о конкретном файле.
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Типы и расширения файлов в Visual Studio для с#
В интегрированной среде разработки предусмотрено несколько способов перемещения между окнами и между файлами в зависимости от предпочтений пользователя или требований проекта. Можно выбрать вариант переключения между файлами в редакторе либо переключения между всеми активными окнами инструментов в интегрированной среде разработки. Также можно непосредственно переходить к любому открытому в редакторе файлу независимо от того, в каком порядке они просматривались. Эти функции могут повысить производительность работы в интегрированной среде разработки. Перемещение между открытыми файлами Перемещение между окнами можно осуществлять несколькими способами:
- Перемещаться между открытыми окнами можно с помощью команд Назад и Вперед в программном меню Вид.
- Для перехода к определенному файлу, открытому в редакторе, независимо от порядка их открытия можно использовать Навигатор IDE, который вызывается с помощью сочетания клавиш CTRL + TAB. Далее удерживая клавишу CTRL и нажимая клавишу со стрелкой (влево или вправо) или TAB несколько раз выделите файл, к которому требуется перейти.. После отпускания клавиши CTRL произойдет автоматический переход к выбранному файлу.
- В правом верхнем углу редактора нажмите кнопку Активные файлы, расположенную рядом с кнопкой Закрыть, а затем выберите нужный файл
Перемещение между окнами инструментов в интегрированной среде разработки Навигатор IDE также позволяет перемещаться между окнами инструментов, открытыми в среде разработки. Для вызова навигатора IDE, позволяющего переключаться между окнами инструментов в произвольном порядке, необходимо использовать сочетание клавиш ALT + F7. Удерживая клавишу ALT, нажмите клавишу F7 несколько раз, чтобы выделить окно, к которому требуется перейти.
Для продолжения скачивания необходимо пройти капчу:
14. Операции с файлами.
Файл – это набор данных, который хранится на внешнем запоминающем устройстве (например на жестком диске). Файл имеет имя и расширение. Расширение позволяет идентифицировать, какие данные и в каком формате хранятся в файле.
Под работой с файлами подразумевается:
- cоздание файлов;
- удаление файлов;
- чтение данных;
- запись данных;
- изменение параметров файла (имя, расширение…);
- другое.
Для работы с файлами в C# существуют классы File и FileInfo. С их помощью мы можем создавать, удалять, перемещать файлы, получать их свойства и многое другое.
Класс File реализует функциональность с помощью статических методов:
- Copy() : копирует файл в новое место
- Create() : создает файл
- Delete() : удаляет файл
- Move() : перемещает файл в новое место
- Exists() : определяет, существует ли файл
Некоторые полезные методы и свойства класса FileInfo:
- CopyTo() : копирует файл в новое место по указанному пути path
- Create() : создает файл
- Delete() : удаляет файл
- MoveTo() : перемещает файл в новое место
- Свойство Directory : получает родительский каталог в виде объекта DirectoryInfo
- Свойство DirectoryName : получает полный путь к родительскому каталогу
- Свойство Exists : указывает, существует ли файл
- Свойство Length : получает размер файла
- Свойство Extension : получает расширение файла
- Свойство Name : получает имя файла
- Свойство FullName : получает полное имя файла
Получение имени файла
string path = @"C:\apache\hta.txt"; FileInfo fileInf = new FileInfo(path); if (fileInf.Exists) < Console.WriteLine("Имя файла: ", fileInf.Name); Console.WriteLine("Время создания: ", fileInf.CreationTime); Console.WriteLine("Размер: ", fileInf.Length); >
Удаление файла
string path = @"C:\apache\hta.txt"; FileInfo fileInf = new FileInfo(path); if (fileInf.Exists) < fileInf.Delete(); // или // File.Delete(path); >
Перемещение файла
string path = @"C:\apache\hta.txt"; string newPath = @"C:\SomeDir\hta.txt"; FileInfo fileInf = new FileInfo(path); if (fileInf.Exists) < fileInf.MoveTo(newPath); // альтернатива с помощью класса File // File.Move(path, newPath); >
Копирование файла
Метод CopyTo класса FileInfo принимает два параметра: путь, по которому файл будет копироваться, и булевое значение, которое указывает, надо ли при копировании перезаписывать файл (если true, как в случае выше, файл при копировании перезаписывается). Если же в качестве последнего параметра передать значение false, то если такой файл уже существует, приложение выдаст ошибку.
Метод Copy класса File принимает три параметра: путь к исходному файлу, путь, по которому файл будет копироваться, и булевое значение, указывающее, будет ли файл перезаписываться.
string path = @"C:\apache\hta.txt"; string newPath = @"C:\SomeDir\hta.txt"; FileInfo fileInf = new FileInfo(path); if (fileInf.Exists) < fileInf.CopyTo(newPath, true); // альтернатива с помощью класса File // File.Copy(path, newPath, true); >
Запись всего текста в файл
File.WriteAllText("D:\\new_file.txt", "текст");
Дописать текст в конец файла
File.AppendAllText("D:\\new_file.txt", "текст"); //допишет текст в конец файла
Использование потоков
Чтение файла
FileStream file1 = new FileStream("d:\\test.txt", FileMode.Open); //создаем файловый поток StreamReader reader = new StreamReader(file1); // создаем «потоковый читатель» и связываем его с файловым потоком Console.WriteLine(reader.ReadToEnd()); //считываем все данные с потока и выводим на экран reader.Close(); //закрываем поток
Запись в файл
FileStream file1 = new FileStream("d:\\test.txt", FileMode.Create); //создаем файловый поток StreamWriter writer = new StreamWriter(file1); //создаем «потоковый писатель» и связываем его с файловым потоком writer.Write("текст"); //записываем в файл writer.Close(); //закрываем поток. Не закрыв поток, в файл ничего не запишется
Пример работы с File
using System; using System.IO; class Test < public static void Main( ) < string path = @"c:\temp\MyTest.txt"; if (!File.Exists(path)) < // Создаем файл using (StreamWriter sw = File.CreateText(path)) < // Записываем в него три строки sw.WriteLine("Hello"); sw.WriteLine("And"); sw.WriteLine("Welcome"); > > // Открываем файл using (StreamReader sr = File.OpenText(path)) < // Считываем из него строки string s = ""; while ((s = sr.ReadLine()) != null) < // И выводим их на экран Console.WriteLine(s); > > >