Sök…


Introduktion

Hanterar filer.

Syntax

  • new System.IO.StreamWriter(string path)
  • new System.IO.StreamWriter(string path, bool append)
  • System.IO.StreamWriter.WriteLine(string text)
  • System.IO.StreamWriter.WriteAsync(string text)
  • System.IO.Stream.Close()
  • System.IO.File.ReadAllText(string path)
  • System.IO.File.ReadAllLines(string path)
  • System.IO.File.ReadLines(string path)
  • System.IO.File.WriteAllText(string path, string text)
  • System.IO.File.WriteAllLines(string path, IEnumerable<string> contents)
  • System.IO.File.Copy(string source, string dest)
  • System.IO.File.Create(string path)
  • System.IO.File.Delete(string path)
  • System.IO.File.Move(string source, string dest)
  • System.IO.Directory.GetFiles(string path)

parametrar

Parameter detaljer
väg Plats för filen.
bifoga Om filen finns, kommer true att lägga till data i slutet av filen (bifoga), falskt kommer att skriva över filen.
text Text som ska skrivas eller lagras.
innehåll En samling strängar som ska skrivas.
källa Platsen för filen du vill använda.
dest Platsen du vill att en fil ska gå till.

Anmärkningar

  • Se alltid till att stänga Stream objekt. Detta kan göras med ett using som visas ovan eller genom att manuellt ringa myStream.Close() .
  • Se till att den aktuella användaren har nödvändiga behörigheter på den sökväg du försöker skapa filen.
  • Verbatim strängar bör användas när du deklarerar en söksträng som innehåller backstänger, så: @"C:\MyFolder\MyFile.txt"

Läser från en fil med klassen System.IO.File

Du kan använda System.IO.File.ReadAllText- funktionen för att läsa hela innehållet i en fil i en sträng.

string text = System.IO.File.ReadAllText(@"C:\MyFolder\MyTextFile.txt");

Du kan också läsa en fil som en rad rader med funktionen System.IO.File.ReadAllLines :

string[] lines = System.IO.File.ReadAllLines(@"C:\MyFolder\MyTextFile.txt");

Skriva rader till en fil med klassen System.IO.StreamWriter

System.IO.StreamWriter- klassen:

Implementerar en TextWriter för att skriva tecken till en ström i en viss kodning.

Med hjälp av WriteLine metoden kan du skriva innehåll rad för rad till en fil.

Lägg märke till användningen av det using nyckelordet som ser till att StreamWriter-objektet kastas så snart det går ut ur räckvidden och att filen därför stängs.

string[] lines = { "My first string", "My second string", "and even a third string" };
using (System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:\MyFolder\OutputText.txt"))
{
    foreach (string line in lines)
    {
        sw.WriteLine(line);
    }
}

Observera att StreamWriter kan ta emot en andra bool parameter i sin konstruktör, vilket gör det möjligt att Append till en fil istället för att skriva över filen:

bool appendExistingFile = true;
using (System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:\MyFolder\OutputText.txt", appendExistingFile ))
{
    sw.WriteLine("This line will be appended to the existing file");
}

Skriva till en fil med klassen System.IO.File

Du kan använda funktionen System.IO.File.WriteAllText för att skriva en sträng till en fil.

string text = "String that will be stored in the file";
System.IO.File.WriteAllText(@"C:\MyFolder\OutputFile.txt", text);

Du kan också använda funktionen System.IO.File.WriteAllLines som får en IEnumerable<String> som den andra parametern (i motsats till en enda sträng i föregående exempel). Detta låter dig skriva innehåll från en rad rader.

string[] lines = { "My first string", "My second string", "and even a third string" };
System.IO.File.WriteAllLines(@"C:\MyFolder\OutputFile.txt", lines);

Lazily läser en fil rad för rad via en IEnumerable

När du arbetar med stora filer kan du använda metoden System.IO.File.ReadLines för att läsa alla rader från en fil till en IEnumerable<string> . Detta liknar System.IO.File.ReadAllLines , förutom att det inte laddar hela filen i minnet på en gång, vilket gör den mer effektiv när du arbetar med stora filer.

IEnumerable<string> AllLines = File.ReadLines("file_name.txt", Encoding.Default);

Den andra parametern för File.ReadLines är valfri. Du kan använda den när det krävs för att ange kodning.

Det är viktigt att notera att att ringa ToArray , ToList eller en annan liknande funktion kommer att tvinga alla rader som ska laddas samtidigt, vilket innebär att fördelen med att använda ReadLines är ogiltig. Det är bäst att räkna över IEnumerable hjälp av en foreach eller LINQ om du använder den här metoden.

Skapa fil

Fil statisk klass

Genom att använda Create metod för klassen File static kan vi skapa filer. Metod skapar filen på den givna banan, samtidigt öppnar den filen och ger oss FileStream för filen. Se till att du stänger filen när du är klar med den.

ex1:

var fileStream1 = File.Create("samplePath");
/// you can write to the fileStream1
fileStream1.Close();

Ex2:

using(var fileStream1 = File.Create("samplePath"))
{
    /// you can write to the fileStream1
}

ex3:

File.Create("samplePath").Close();

FileStream klass

Det finns många överbelastningar av denna klasskonstruktör som faktiskt är väl dokumenterad här . Nedanstående exempel är den som täcker de mest använda funktionaliteterna i denna klass.

var fileStream2 = new FileStream("samplePath", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);

Du kan kontrollera händelserna för FileMode , FileAccess och FileShare från dessa länkar. Vad de egentligen betyder är följande:

FileMode: Svar "Bör fil skapas? Öppnas? Skapa om inte finns, öppna?" kinda frågor.

FileAccess: Svar "Ska jag kunna läsa filen, skriva till filen eller båda?" kinda frågor.

FileShare: Svar "Bör andra användare kunna läsa, skriva etc. till filen medan jag använder den samtidigt?" kinda frågor.

Kopiera fil

Fil statisk klass

File statisk klass lätt kan användas för detta ändamål.

File.Copy(@"sourcePath\abc.txt", @"destinationPath\abc.txt");
File.Copy(@"sourcePath\abc.txt", @"destinationPath\xyz.txt");

Anmärkning: Med den här metoden kopieras filen, vilket betyder att den kommer att läsas från källan och sedan skrivas till destinationsvägen. Det här är en resurskrävande process, det tar relativt tid till filstorleken och kan leda till att ditt program fryser om du inte använder trådar.

Flytta fil

Fil statisk klass

Statisk klass för filer kan enkelt användas för detta ändamål.

File.Move(@"sourcePath\abc.txt", @"destinationPath\xyz.txt");

Anmärkning1: Ändrar endast filens index (om filen flyttas i samma volym). Denna åtgärd tar inte relativ tid till filstorleken.

Anmärkning2: Det går inte att åsidosätta en befintlig fil på destinationsvägen.

Radera fil

string path = @"c:\path\to\file.txt";
File.Delete(path);

Medan Delete inte kastar undantag om filen inte finns, kommer den att kasta undantag, t.ex. om den angivna sökvägen är ogiltig eller den som ringer inte har de behörigheter som krävs. Du bör alltid radera samtal för att ta Delete inne i try-catch-blocket och hantera alla förväntade undantag. Om det är möjligt med tävlingsförhållanden, ska du logga in den inuti låsmeddelandet .

Filer och kataloger

Hämta alla filer i katalogen

 var FileSearchRes = Directory.GetFiles(@Path, "*.*", SearchOption.AllDirectories);

Returnerar en matris med FileInfo representerar alla filer i den angivna katalogen.

Hämta filer med specifikt förlängning

 var FileSearchRes = Directory.GetFiles(@Path, "*.pdf", SearchOption.AllDirectories);

Returnerar en matris med FileInfo , som representerar alla filer i den angivna katalogen med det angivna tillägget.

Async skriver text till en fil med StreamWriter

// filename is a string with the full path
// true is to append        
using (System.IO.StreamWriter file = new System.IO.StreamWriter(filename, true))
{
   // Can write either a string or char array
   await file.WriteAsync(text);
}


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow