Använda Visual C# för att läsa från och skriva till en textfil
Den här artikeln hjälper dig att läsa från och skriva till en textfil med hjälp av Visual C#.
Ursprunglig produktversion: Visual Studio
Ursprungligt KB-nummer: 816149
Sammanfattning
I avsnittet Läsa en textfil i den här artikeln beskrivs hur du använder klassen StreamReader
för att läsa en textfil. Avsnitten Skriv en textfil (exempel 1) och Skriv en textfil (exempel 2) beskriver hur du använder klassen StreamWriter
för att skriva text till en fil.
Läsa en textfil
Följande kod använder klassen StreamReader
för att öppna, läsa och stänga textfilen. Du kan överföra sökvägen till en textfil till StreamReader
konstruktören så att filen öppnas automatiskt. Metoden ReadLine
läser upp varje textrad och flyttar filpekaren till nästa rad i takt med att den läser. När metoden ReadLine
når slutet av filen returneras en null-referens. Mer information finns i StreamReader Class.
Skapa en exempeltext-fil i Anteckningar. Följ de här stegen:
- Klistra in texten hej världen i Anteckningar.
- Spara filen som Sample.txt.
Starta Microsoft Visual Studio.
På Arkiv-menyn pekar du på Nytt och väljer sedan Projekt.
Välj Visuella C#-projekt under Projekttyper och välj sedan Konsolprogram under Mallar.
Lägg till följande kod i början av filen Class1.cs:
using System.IO;
Lägg till följande kod i metoden
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."); }
På menyn Felsökning väljer du Start för att sammanställa och köra programmet. Tryck på RETUR för att stänga fönstret Konsol. I konsolfönstret visas innehållet i filen Sample.txt:
Hello world
Skriva en textfil (exempel 1)
I följande kod används klassen StreamWriter
för att öppna, skriva och stänga textfilen. På liknande sätt som klassen StreamReader
kan du överföra sökvägen till en textfil till StreamWriter
konstruktören för att öppna filen automatiskt. Metoden WriteLine
skriver en fullständig textrad till textfilen.
Starta Visual Studio.
På Arkiv-menyn pekar du på Nytt och väljer sedan Projekt.
Välj Visuella C#-projekt under Projekttyper och välj sedan Konsolprogram under Mallar.
Lägg till följande kod i början av filen Class1.cs:
using System.IO;
Lägg till följande kod i metoden
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."); }
På menyn Felsökning väljer du Start för att sammanställa och köra programmet. Med den här koden skapas en fil med namnet Test.txt på enhet C. Öppna Test.txt i en textredigerare som Anteckningar. Test.txt innehåller två textrader:
Hello World!! From the StreamWriter class
Skriva en textfil (exempel 2)
I följande kod används klassen StreamWriter
för att öppna, skriva och stänga textfilen. Till skillnad från föregående exempel skickar den här koden ytterligare två parametrar till konstruktören. Den första parametern är filsökvägen och filnamnet på filen. Den andra parametern, true
, anger att filen öppnas i läget för att lägga till. Om du anger false
för den andra parametern skrivs innehållet i filen över varje gång du kör koden. Den tredje parametern anger Unicode
, så att StreamWriter
kodar filen i Unicode-format. Du kan också ange följande kodningsmetoder för den tredje parametern:
- ASC11
- Unicode
- UTF7
- UTF8
Metoden Write
liknar metoden WriteLine
, förutom att metoden Write
inte automatiskt bäddar in en kombination av vagnretur- eller radmatningstecken (CR/LF). Det är användbart när du vill skriva ett tecken i taget.
Starta Visual Studio.
Peka på Nytt på Arkiv-menyn och klicka sedan på Projekt.
Klicka på Visuel C#-projekt under Projekttyper och klicka sedan på Konsolprogram under Mallar.
Lägg till följande kod i början av filen Class1.cs:
using System.IO; using System.Text;
Lägg till följande kod i metoden
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."); }
På menyn Felsökning väljer du Start för att sammanställa och köra programmet. Med den här koden skapas en fil med namnet Test1.txt på enhet C. Öppna Test1.txt i en textredigerare som Anteckningar. Test1.txt innehåller en enda textrad: 0123456789.
Fullständig kodlistning för att läsa en textfil
//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.");
}
}
}
}
Fullständig kodlistning för hur du skriver en textfil (version 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.");
}
}
}
}
Fullständig kodlista för hur du skriver en textfil (version 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.");
}
}
}
}
Felsöka
I programmering är det bra att omsluta koden i ett try-catch-finally
block för att hantera fel och undantag i alla filmanipuleringar. Mer specifikt kanske du vill släppa referenser för filen i det sista blocket så att filen inte är låst på obestämd tid. Vissa möjliga fel kan vara en fil som inte finns eller en fil som redan används.