Visual C# gebruiken om uit een tekstbestand te lezen en naar een tekstbestand te schrijven
Dit artikel helpt u bij het lezen van en schrijven naar een tekstbestand met behulp van Visual C#.
Oorspronkelijke productversie: Visual Studio
Oorspronkelijk KB-nummer: 816149
Samenvatting
In het gedeelte Een tekstbestand lezen van dit artikel wordt beschreven hoe u de klasse StreamReader
gebruikt om een tekstbestand te lezen. De secties Schrijf een tekstbestand (voorbeeld 1) en de secties Schrijf een tekstbestand (voorbeeld 2) beschrijven hoe u de klasse StreamWriter
gebruikt om tekst naar een bestand te schrijven.
Een tekstbestand lezen
De volgende code gebruikt de klasse StreamReader
om het tekstbestand te openen, te lezen en te sluiten. U kunt het pad van een tekstbestand doorgeven aan de StreamReader
-constructor om het bestand automatisch te openen. De methode ReadLine
leest elke regel tekst en verhoogt de bestandsaanwijzer naar de volgende regel terwijl deze wordt gelezen. Wanneer de methode ReadLine
het einde van het bestand bereikt, wordt een null-verwijzing geretourneerd. Raadpleeg Klasse StreamReader voor meer informatie.
Maak een voorbeeldtekstbestand in Kladblok. Volg vervolgens deze stappen:
- Plak de hello world-tekst in Kladblok.
- Sla het bestand op als Sample.txt.
Start Microsoft Visual Studio.
Wijs in het menu Bestand naar Nieuw en selecteer vervolgens Project.
Selecteer Visuele C#-projecten onder Projecttypen en selecteer vervolgens Consoletoepassing onder Sjablonen.
Voeg de volgende code toe aan het begin van het bestand Class1.cs:
using System.IO;
Voeg de volgende code toe aan de methode
Main
:String line; try { //Pass the file path and file name to the StreamReader constructor StreamReader sr = new StreamReader("C:\\Sample.txt"); //Read the first line of text line = sr.ReadLine(); //Continue to read until you reach end of file while (line != null) { //write the line to console window Console.WriteLine(line); //Read the next line line = sr.ReadLine(); } //close the file sr.Close(); Console.ReadLine(); } catch(Exception e) { Console.WriteLine("Exception: " + e.Message); } finally { Console.WriteLine("Executing finally block."); }
Selecteer in het menu Foutopsporing Start om de toepassing te compileren en uit te voeren. Druk op ENTER om het venster Console te sluiten. Het venster Console geeft de inhoud van het bestand Sample.txt weer:
Hello world
Een tekstbestand schrijven (voorbeeld 1)
De volgende code gebruikt de klasse StreamWriter
om het tekstbestand te openen, te schrijven en te sluiten. Op dezelfde manier als de klasse StreamReader
kunt u het pad van een tekstbestand doorgeven aan de StreamWriter
-constructor om het bestand automatisch te openen. De methode WriteLine
schrijft een volledige tekstregel naar het tekstbestand.
Visual Studio starten.
Wijs in het menu Bestand naar Nieuw en selecteer vervolgens Project.
Selecteer Visuele C#-projecten onder Projecttypen en selecteer vervolgens Consoletoepassing onder Sjablonen.
Voeg de volgende code toe aan het begin van het bestand Class1.cs:
using System.IO;
Voeg de volgende code toe aan de methode
Main
:try { //Pass the filepath and filename to the StreamWriter Constructor StreamWriter sw = new StreamWriter("C:\\Test.txt"); //Write a line of text sw.WriteLine("Hello World!!"); //Write a second line of text sw.WriteLine("From the StreamWriter class"); //Close the file sw.Close(); } catch(Exception e) { Console.WriteLine("Exception: " + e.Message); } finally { Console.WriteLine("Executing finally block."); }
Selecteer in het menu Foutopsporing Start om de toepassing te compileren en uit te voeren. Deze code maakt een bestand met de naam Test.txt op station C. Open Test.txt in een teksteditor zoals Kladblok. Test.txt bevat twee regels tekst:
Hello World!! From the StreamWriter class
Een tekstbestand schrijven (voorbeeld 2)
De volgende code gebruikt de klasse StreamWriter
om het tekstbestand te openen, te schrijven en te sluiten. In tegenstelling tot het vorige voorbeeld, geeft deze code twee extra parameters door aan de constructor. De eerste parameter is het bestandspad en de bestandsnaam van het bestand. De tweede parameter, true
, geeft aan dat het bestand wordt geopend in de toevoegmodus. Als u false
opgeeft voor de tweede parameter, wordt de inhoud van het bestand elke keer dat u de code uitvoert overschreven. De derde parameter specificeert Unicode
, zodat StreamWriter
het bestand codeert in Unicode-indeling. U kunt ook de volgende coderingsmethoden opgeven voor de derde parameter:
- ASC11
- Unicode
- UTF7
- UTF8
De methode Write
is vergelijkbaar met de methode WriteLine
, behalve dat de methode Write
niet automatisch een tekencombinatie met een regelterugloop of regelinvoer (CR/LF) insluit. Het is handig wanneer u één teken tegelijk wilt schrijven.
Visual Studio starten.
Wijs in het menu Bestand naar Nieuw en klik vervolgens op Project.
Klik op Visuele C#-projecten onder Projecttypen en klik vervolgens op Consoletoepassing onder Sjablonen.
Voeg de volgende code toe aan het begin van het bestand Class1.cs:
using System.IO; using System.Text;
Voeg de volgende code toe aan de methode
Main
:Int64 x; try { //Open the File StreamWriter sw = new StreamWriter("C:\\Test1.txt", true, Encoding.ASCII); //Write out the numbers 1 to 10 on the same line. for(x=0; x < 10; x++) { sw.Write(x); } //close the file sw.Close(); } catch(Exception e) { Console.WriteLine("Exception: " + e.Message); } finally { Console.WriteLine("Executing finally block."); }
Selecteer in het menu Foutopsporing Start om de toepassing te compileren en uit te voeren. Deze code maakt een bestand met de naam Test1.txt op station C. Open Test1.txt in een teksteditor zoals Kladblok. Test1.txt bevat één regel tekst: 0123456789.
Volledige codelijst voor het lezen van een tekstbestand
//Read a Text File
using System;
using System.IO;
namespace readwriteapp
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
String line;
try
{
//Pass the file path and file name to the StreamReader constructor
StreamReader sr = new StreamReader("C:\\Sample.txt");
//Read the first line of text
line = sr.ReadLine();
//Continue to read until you reach end of file
while (line != null)
{
//write the line to console window
Console.WriteLine(line);
//Read the next line
line = sr.ReadLine();
}
//close the file
sr.Close();
Console.ReadLine();
}
catch(Exception e)
{
Console.WriteLine("Exception: " + e.Message);
}
finally
{
Console.WriteLine("Executing finally block.");
}
}
}
}
Volledige codevermelding voor het schrijven van een tekstbestand (versie 1)
//Write a text file - Version-1
using System;
using System.IO;
namespace readwriteapp
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
try
{
//Pass the filepath and filename to the StreamWriter Constructor
StreamWriter sw = new StreamWriter("C:\\Test.txt");
//Write a line of text
sw.WriteLine("Hello World!!");
//Write a second line of text
sw.WriteLine("From the StreamWriter class");
//Close the file
sw.Close();
}
catch(Exception e)
{
Console.WriteLine("Exception: " + e.Message);
}
finally
{
Console.WriteLine("Executing finally block.");
}
}
}
}
Volledige codevermelding voor het schrijven van een tekstbestand (versie 2)
//Write a text file - Version 2
using System;
using System.IO;
using System.Text;
namespace readwriteapp
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
Int64 x;
try
{
//Open the File
StreamWriter sw = new StreamWriter("C:\\Test1.txt", true, Encoding.ASCII);
//Writeout the numbers 1 to 10 on the same line.
for(x=0; x < 10; x++)
{
sw.Write(x);
}
//close the file
sw.Close();
}
catch(Exception e)
{
Console.WriteLine("Exception: " + e.Message);
}
finally
{
Console.WriteLine("Executing finally block.");
}
}
}
}
Problemen oplossen
Voor alle bestandsmanipulaties is het een goede programmeerpraktijk om de code in een try-catch-finally
-blok te plaatsen om fouten en uitzonderingen af te handelen. Mogelijk wilt u de ingangen voor het bestand in het laatste blok vrijgeven, zodat het bestand niet voor onbepaalde tijd is vergrendeld. Enkele mogelijke fouten zijn een bestand dat niet bestaat of een bestand dat al in gebruik is.