Работа с файлами
Файл – это набор данных, который хранится на внешнем запоминающем устройстве (например на жестком диске). Файл имеет имя и расширение. Расширение позволяет идентифицировать, какие данные и в каком формате хранятся в файле.
Под работой с файлами подразумевается:
- cоздание файлов;
- удаление файлов;
- чтение данных;
- запись данных;
- изменение параметров файла (имя, расширение…);
- другое.
Для работы с файлами в C# существуют классы File и FileInfo. С их помощью мы можем создавать, удалять, перемещать файлы, получать их свойства и многое другое.
Класс File реализует функциональность с помощью статических методов:
Copy()
: копирует файл в новое местоCreate()
: создает файлDelete()
: удаляет файлMove()
: перемещает файл в новое местоExists()
: определяет, существует ли файл
Некоторые полезные методы и свойства класса FileInfo:
CopyTo()
: копирует файл в новое место по указанному пути pathCreate()
: создает файл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("Имя файла: {0}", fileInf.Name);
Console.WriteLine("Время создания: {0}", fileInf.CreationTime);
Console.WriteLine("Размер: {0}", 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);
}
}
}