Си шарп удалить файл

File Info. Delete Метод

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Удаляет файл без возможности восстановления.

public: override void Delete();
public override void Delete ();
override this.Delete : unit -> unit
Public Overrides Sub Delete ()

Исключения

Целевой файл открыт или сопоставлен в памяти на компьютере под управлением Microsoft Windows NT.

-или- Для файла имеется открытый дескриптор, а операционной системой является Windows XP или более ранней версии. Этот открытый дескриптор может быть результатом перечисления каталогов и файлов. Дополнительные сведения см. в разделе Практическое руководство. Перечисление каталогов и файлов.

У вызывающего объекта отсутствует необходимое разрешение.

Примеры

В следующем примере демонстрируется Delete метод.

using namespace System; using namespace System::IO; int main() < String^ path = "c:\\MyTest.txt"; FileInfo^ fi1 = gcnew FileInfo( path ); try < StreamWriter^ sw = fi1->CreateText(); if ( sw ) delete (IDisposable^)sw; String^ path2 = String::Concat( path, "temp" ); FileInfo^ fi2 = gcnew FileInfo( path2 ); //Ensure that the target does not exist. fi2->Delete(); //Copy the file. fi1->CopyTo( path2 ); Console::WriteLine( " was copied to .", path, path2 ); //Delete the newly created file. fi2->Delete(); Console::WriteLine( " was successfully deleted.", path2 ); > catch ( Exception^ e ) < Console::WriteLine( "The process failed: ", e ); > > //This code produces output similar to the following; //results may vary based on the computer/file structure/etc.: // //c:\MyTest.txt was copied to c:\MyTest.txttemp. //c:\MyTest.txttemp was successfully deleted. 
using System; using System.IO; class Test < public static void Main() < string path = @"c:\MyTest.txt"; FileInfo fi1 = new FileInfo(path); try < using (StreamWriter sw = fi1.CreateText()) <>string path2 = path + "temp"; FileInfo fi2 = new FileInfo(path2); //Ensure that the target does not exist. fi2.Delete(); //Copy the file. fi1.CopyTo(path2); Console.WriteLine(" was copied to .", path, path2); //Delete the newly created file. fi2.Delete(); Console.WriteLine(" was successfully deleted.", path2); > catch (Exception e) < Console.WriteLine("The process failed: ", e.ToString()); > > > //This code produces output similar to the following; //results may vary based on the computer/file structure/etc.: // //c:\MyTest.txt was copied to c:\MyTest.txttemp. //c:\MyTest.txttemp was successfully deleted. 
Imports System.IO Imports System.Text Public Class Test Public Shared Sub Main() Dim path As String = "c:\MyTest.txt" Dim fi As FileInfo = New FileInfo(path) Try Dim sw As StreamWriter = fi.CreateText() sw.Close() Dim path2 As String = path + "temp" Dim fi2 As FileInfo = New FileInfo(path2) 'Ensure that the target does not exist. fi2.Delete() 'Copy the file. fi.CopyTo(path2) Console.WriteLine(" was copied to .", path, path2) 'Delete the newly created file. fi2.Delete() Console.WriteLine(" was successfully deleted.", path2) Catch e As Exception Console.WriteLine("The process failed: ", e.ToString()) End Try End Sub End Class 'This code produces output similar to the following; 'results may vary based on the computer/file structure/etc.: ' 'c:\MyTest.txt was copied to c:\MyTest.txttemp. 'c:\MyTest.txttemp was successfully deleted. 

В следующем примере создается, закрывается и удаляется файл.

using namespace System; using namespace System::IO; int main() < // Create a reference to a file. FileInfo^ fi = gcnew FileInfo( "temp.txt" ); // Actually create the file. FileStream^ fs = fi->Create(); // Modify the file as required, and then close the file. fs->Close(); // Delete the file. fi->Delete(); > 
using System; using System.IO; public class DeleteTest < public static void Main() < // Create a reference to a file. FileInfo fi = new FileInfo("temp.txt"); // Actually create the file. FileStream fs = fi.Create(); // Modify the file as required, and then close the file. fs.Close(); // Delete the file. fi.Delete(); >> 
Imports System.IO Public Class DeleteTest Public Shared Sub Main() ' Create a reference to a file. Dim fi As New FileInfo("temp.txt") ' Actually create the file. Dim fs As FileStream = fi.Create() ' Modify the file as required, and then close the file. fs.Close() ' Delete the file. fi.Delete() End Sub End Class 

Комментарии

Если файл не существует, этот метод ничего не делает.

Читайте также:  Html submit form with get

Источник

Си шарп удалить файл

Подобно паре Directory/DirectoryInfo для работы с файлами предназначена пара классов File и FileInfo . С их помощью мы можем создавать, удалять, перемещать файлы, получать их свойства и многое другое.

FileInfo

Некоторые полезные методы и свойства класса FileInfo :

  • CopyTo(path) : копирует файл в новое место по указанному пути path
  • Create() : создает файл
  • Delete() : удаляет файл
  • MoveTo(destFileName) : перемещает файл в новое место
  • Свойство Directory : получает родительский каталог в виде объекта DirectoryInfo
  • Свойство DirectoryName : получает полный путь к родительскому каталогу
  • Свойство Exists : указывает, существует ли файл
  • Свойство Length : получает размер файла
  • Свойство Extension : получает расширение файла
  • Свойство Name : получает имя файла
  • Свойство FullName : получает полное имя файла

Для создания объекта FileInfo применяется конструктор, который получает в качестве параметра путь к файлу:

FileInfo fileInf = new FileInfo(@"C:\app\content.txt");

File

Класс File реализует похожую функциональность с помощью статических методов:

  • Copy() : копирует файл в новое место
  • Create() : создает файл
  • Delete() : удаляет файл
  • Move : перемещает файл в новое место
  • Exists(file) : определяет, существует ли файл

Пути к файлам

Для работы с файлами можно применять как абсолютные, так и относительные пути:

// абсолютные пути string path1 = @"C:\Users\eugene\Documents\content.txt"; // для Windows string path2 = "C:\\Users\\eugene\\Documents\\content.txt"; // для Windows string path3 = "/Users/eugene/Documents/content.txt"; // для MacOS/Linux // относительные пути string path4 = "MyDir\\content.txt"; // для Windows string path5 = "MyDir/content.txt"; // для MacOS/Linux

Получение информации о файле

string path = @"C:\Users\eugene\Documents\content.txt"; // string path = "/Users/eugene/Documents/content.txt"; // для MacOS/Linux FileInfo fileInfo = new FileInfo(path); if (fileInfo.Exists) < Console.WriteLine($"Имя файла: "); Console.WriteLine($"Время создания: "); Console.WriteLine($"Размер: "); >

Удаление файла

string path = @"C:\app\content.txt"; FileInfo fileInf = new FileInfo(path); if (fileInf.Exists) < fileInf.Delete(); // альтернатива с помощью класса File // File.Delete(path); >

Перемещение файла

string path = @"C:\OldDir\content.txt"; string newPath = @"C:\NewDir\index.txt"; FileInfo fileInf = new FileInfo(path); if (fileInf.Exists) < fileInf.MoveTo(newPath); // альтернатива с помощью класса File // File.Move(path, newPath); >

Если файл по новому пути уже существует, то с помощью дополнительного параметра можно указать, надо ли перезаписать файл (при значении true файл перезаписывается)

string path = @"C:\OldDir\content.txt"; string newPath = @"C:\NewDir\index.txt"; FileInfo fileInf = new FileInfo(path); if (fileInf.Exists) < fileInf.MoveTo(newPath, true); // альтернатива с помощью класса File // File.Move(path, newPath, true); >

Копирование файла

string path = @"C:\OldDir\content.txt"; string newPath = @"C:\NewDir\index2.txt"; FileInfo fileInf = new FileInfo(path); if (fileInf.Exists) < fileInf.CopyTo(newPath, true); // альтернатива с помощью класса File // File.Copy(path, newPath, true); >

Метод CopyTo класса FileInfo принимает два параметра: путь, по которому файл будет копироваться, и булевое значение, которое указывает, надо ли при копировании перезаписывать файл (если true , как в случае выше, файл при копировании перезаписывается). Если же в качестве последнего параметра передать значение false , то если такой файл уже существует, приложение выдаст ошибку.

Метод Copy класса File принимает три параметра: путь к исходному файлу, путь, по которому файл будет копироваться, и булевое значение, указывающее, будет ли файл перезаписываться.

Чтение и запись файлов

В дополнение к вышерассмотренным методам класс File также предоставляет ряд методов для чтения-записи текстовых и бинарных файлов:

  • AppendAllLines(String, IEnumerable) / AppendAllLinesAsync(String, IEnumerable, CancellationToken) добавляют в файл набор строк. Если файл не существует, то он создается
  • AppendAllText(String, String) / AppendAllTextAsync(String, String, CancellationToken) добавляют в файл строку. Если файл не существует, то он создается
  • byte[] ReadAllBytes (string path) / Task ReadAllBytesAsync (string path, CancellationToken cancellationToken) считывают содержимое бинарного файла в массив байтов
  • string[] ReadAllLines (string path) / Task ReadAllLinesAsync (string path, CancellationToken cancellationToken) считывают содержимое текстового файла в массив строк
  • string ReadAllText (string path) / Task ReadAllTextAsync (string path, CancellationToken cancellationToken) считывают содержимое текстового файла в строку
  • IEnumerable ReadLines (string path) считывают содержимое текстового файла в коллекцию строк
  • void WriteAllBytes (string path, byte[] bytes) / Task WriteAllBytesAsync (string path, byte[] bytes, CancellationToken cancellationToken) записывают массив байт в бинарный файл. Если файл не существует, он создается. Если существует, то перезаписывается
  • void WriteAllLines (string path, string[] contents) / Task WriteAllLinesAsync (string path, IEnumerable contents, CancellationToken cancellationToken) записывают массив строк в текстовый файл. Если файл не существует, он создается. Если существует, то перезаписывается
  • WriteAllText (string path, string? contents) / Task WriteAllTextAsync (string path, string? contents, CancellationToken cancellationToken) записывают строку в текстовый файл. Если файл не существует, он создается. Если существует, то перезаписывается

Как видно, эти методы покрывают практически все основные сценарии — чтение и запись текстовых и бинарных файлов. Причем в зависимости от задачи можно применять как синхронные методы, так и их асинхронные аналоги.

Например, запишем и считаем обратно в строку текстовый файл:

string path = @"c:\app\content.txt"; string originalText = "Hello Metanit.com"; // запись строки await File.WriteAllTextAsync(path, originalText); // дозапись в конец файла await File.AppendAllTextAsync(path, "\nHello work"); // чтение файла string fileText = await File.ReadAllTextAsync(path); Console.WriteLine(fileText);
Hello Metanit.com Hello work

Стоит отметить, что при добавлении текста я добавил в строку последовательность «\n», которая выполняет перевод на следующую строку. Благодаря этому добавляемый текст располагается в файле на новой строке.

Если мы хотим, что в файле изначально шло добавление на новую строку, то для записи стоит использовать метод WriteAllLines/ WriteAllLinesAsync , а для добавления — AppendAllLines / AppendAllLinesAsync

await File.WriteAllLinesAsync(path, new[] < "Hello Metanit.com", "Hello work" >);

Аналогично при чтении файла если мы хотим каждую строку файла считать отдельно, то вместо ReadAllText / ReadAllTextAsync применяется ReadAllLines / ReadAllLinesAsync .

Кодировка

В качестве дополнительного параметра методы чтения-записи текстовых файлов позволяют установить кодировку в виде объекта System.Text.Encoding :

using System.Text; string path = "/Users/eugene/Documents/app/content.txt"; string originalText = "Привет Metanit.com"; // запись строки await File.WriteAllTextAsync(path, originalText, Encoding.Unicode); // дозапись в конец файла await File.AppendAllTextAsync(path, "\nПривет мир", Encoding.Unicode); // чтение файла string fileText = await File.ReadAllTextAsync(path, Encoding.Unicode); Console.WriteLine(fileText);

Для установки кодировки при записи и чтении здесь применяется встроенное значение Encoding.Unicode . Также можно указать название кодировки, единственное следует удостовериться, что текущая операционная система поддерживает выбранную кодировку:

using System.Text; string path = @"c:\app\content.txt"; string originalText = "Hello Metanit.com"; // запись строки await File.WriteAllTextAsync(path, originalText, Encoding.GetEncoding("iso-8859-1")); // дозапись в конец файла await File.AppendAllTextAsync(path, "\nHello code", Encoding.GetEncoding("iso-8859-1")); // чтение файла string fileText = await File.ReadAllTextAsync(path, Encoding.GetEncoding("iso-8859-1")); Console.WriteLine(fileText);

Источник

Оцените статью