Zoeken…


Invoering

Beheert bestanden.

Syntaxis

  • 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)

parameters

Parameter Details
pad De locatie van het bestand.
append Als het bestand bestaat, voegt true gegevens toe aan het einde van het bestand (toevoegen), en false overschrijft het bestand.
tekst Tekst om te schrijven of op te slaan.
inhoud Een verzameling te schrijven strings.
bron De locatie van het bestand dat u wilt gebruiken.
dest De locatie waar u een bestand naartoe wilt.

Opmerkingen

  • Zorg er altijd voor dat Stream objecten worden gesloten. Dit kan gedaan worden met een using zoals hierboven getoond of door handmatig myStream.Close() roepen.
  • Zorg ervoor dat de huidige gebruiker de benodigde machtigingen heeft voor het pad dat u probeert het bestand te maken.
  • Woordelijke tekenreeksen moeten worden gebruikt bij het declareren van een @"C:\MyFolder\MyFile.txt" die backslashes bevat, zoals: @"C:\MyFolder\MyFile.txt"

Lezen van een bestand met behulp van de klasse System.IO.File

U kunt de functie System.IO.File.ReadAllText gebruiken om de volledige inhoud van een bestand in een tekenreeks te lezen.

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

U kunt een bestand ook als een reeks regels lezen met de functie System.IO.File.ReadAllLines :

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

Lijnen naar een bestand schrijven met de klasse System.IO.StreamWriter

De klasse System.IO.StreamWriter :

Implementeert een TextWriter voor het schrijven van tekens naar een stream in een bepaalde codering.

Met de WriteLine methode kunt u inhoud regel voor regel naar een bestand schrijven.

Let op het gebruik van het sleutelwoord using dat ervoor zorgt dat het StreamWriter-object wordt verwijderd zodra het buiten het bereik valt en dus het bestand wordt gesloten.

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);
    }
}

Merk op dat de StreamWriter een tweede kan ontvangen bool parameter in zijn bouwer, het mogelijk maakt om Append naar een bestand in plaats van het overschrijven van het bestand:

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");
}

Schrijven naar een bestand met de klasse System.IO.File

U kunt de functie System.IO.File.WriteAllText gebruiken om een tekenreeks naar een bestand te schrijven.

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

U kunt ook de functie System.IO.File.WriteAllLines gebruiken die als tweede parameter een IEnumerable<String> ontvangt (in tegenstelling tot een enkele string in het vorige voorbeeld). Hiermee kunt u inhoud schrijven uit een reeks regels.

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

Lui een bestand regel voor regel lezen via een IEnumerable

Wanneer u met grote bestanden werkt, kunt u de methode System.IO.File.ReadLines gebruiken om alle regels van een bestand in een IEnumerable<string> . Dit is vergelijkbaar met System.IO.File.ReadAllLines , behalve dat het niet het hele bestand in één keer in het geheugen laadt, waardoor het efficiënter wordt bij het werken met grote bestanden.

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

De tweede parameter van File.ReadLines is optioneel. U kunt het gebruiken wanneer het nodig is om codering op te geven.

Het is belangrijk op te merken dat het aanroepen van ToArray , ToList of een andere soortgelijke functie ervoor zorgt dat alle regels tegelijk worden geladen, wat betekent dat het voordeel van het gebruik van ReadLines teniet wordt gedaan. Het is het beste om over de IEnumerable met behulp van een foreach lus of LINQ als u deze methode gebruikt.

Maak bestand

Statische bestandsklasse

Door de methode Create van de statische File , kunnen we bestanden maken. Methode maakt het bestand op het opgegeven pad, tegelijkertijd opent het het bestand en geeft ons de FileStream van het bestand. Zorg ervoor dat u het bestand sluit nadat u klaar bent.

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();

Klasse FileStream

Er zijn veel overbelastingen van deze klassenbouwer die hier goed is gedocumenteerd. Onderstaand voorbeeld is voor degene die de meest gebruikte functionaliteiten van deze klasse behandelt.

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

U kunt de enums voor FileMode , FileAccess en FileShare controleren via die koppelingen. Wat ze in feite bedoelen zijn als volgt:

FileMode: Antwoorden "Moet het bestand worden gemaakt? Geopend? Maken als het niet bestaat, dan openen?" nogal vragen.

FileAccess: Antwoorden "Moet ik het bestand kunnen lezen, naar het bestand kunnen schrijven of beide?" nogal vragen.

FileShare: Antwoorden "Moeten andere gebruikers het bestand kunnen lezen, schrijven enz. Terwijl ik het tegelijkertijd gebruik?" nogal vragen.

Kopieer bestand

Statische bestandsklasse

Statische File kan eenvoudig voor dit doel worden gebruikt.

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

Opmerking: Op deze manier wordt het bestand gekopieerd, wat betekent dat het uit de bron wordt gelezen en vervolgens naar het doelpad wordt geschreven. Dit is een bronverslindend proces, het kost relatief veel tijd om de bestandsgrootte en kan ervoor zorgen dat uw programma vastloopt als u geen threads gebruikt.

Bestand verplaatsen

Statische bestandsklasse

Statische bestandsklasse kan eenvoudig voor dit doel worden gebruikt.

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

Opmerking1: Verandert alleen de index van het bestand (als het bestand in hetzelfde volume wordt verplaatst). Deze bewerking duurt niet relatief lang aan de bestandsgrootte.

Opmerking2: kan een bestaand bestand op het doelpad niet overschrijven.

Verwijder bestand

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

Hoewel Delete geen uitzondering genereert als het bestand niet bestaat, wordt een uitzondering gegenereerd, bijvoorbeeld als het opgegeven pad ongeldig is of de beller niet de vereiste machtigingen heeft. U moet altijd oproepen naar Delete in het try-catch-blok wikkelen en alle verwachte uitzonderingen verwerken. Wikkel logica in slotverklaring in het geval van mogelijke raceomstandigheden.

Bestanden en mappen

Download alle bestanden in de directory

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

Retourneert een array van FileInfo , die alle bestanden in de opgegeven map vertegenwoordigt.

Download bestanden met specifieke extensie

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

Retourneert een array van FileInfo , die alle bestanden in de opgegeven map met de opgegeven extensie vertegenwoordigt.

Async schrijft tekst naar een bestand met 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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow