C# FileStream、StreamWriter、StreamReader、TextWriter、TextReader
作者:admin 时间:2023-6-13 12:29:23 浏览:在本教程中,你将了解 System.IO
,它是一个 C# 命名空间。此命名空间提供 C# 类(例如 FileStream
、StreamWriter
、StreamReader
)来处理文件 I/O。
文件基本上是存储在内存中特定给定目录中的系统对象,具有适当的名称和扩展名。在 C# 中,如果我们将文件用于写入或读取数据,我们将其称为流。
在本教程中,我们将研究用于从给定文件检索数据的输入流和用于将数据放入文件的输出流。
C# FileStream
System.IO
是 C# 中存在的命名空间,它包含可用于对给定流执行不同操作的类,例如创建、编辑和从给定文件检索数据。
FileStream
提供了执行文件操作的路径。它主要用于读取和写入数据到文件中。
写入文件的示例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
FileStream f = new FileStream("d:\\b.txt", FileMode.OpenOrCreate);
Console.WriteLine("File opened");
f.WriteByte(70);
Console.WriteLine("Data written into file");
f.Close();
Console.WriteLine("File Stream closed");
}
}
}
在这里,我们编写了一个简单的程序,使用FileStream
将单字节数据写入文件。首先,我们创建了一个 FileStream
对象并传递了文件名。然后我们将文件模式设置为打开或创建。在打开的文件中,我们使用 WriteByte
写了一个字节,最后,我们关闭了所有内容。
输出是一个只有一个字节的 txt 文件。
读取文件的例子
在我们之前的例子中,我们学习了如何写入文件,现在让我们尝试读取文件。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
FileStream f = new FileStream("d:\\b.txt", FileMode.OpenOrCreate);
Console.WriteLine("File opened");
char a = (char)f.ReadByte();
Console.WriteLine("Data read from file is: "+a);
f.Close();
Console.WriteLine("File Stream closed");
Console.ReadLine();
}
}
}
这里我们使用 ReadByte
从文件中读取字节。此命令用于从文件中读取单个字节。如果你想读取更多数据,则需要通过循环传递它。然后我们将它存储到一个 char
变量中,但由于返回类型并不总是与 ReadByte
匹配,我们还为 char
添加了一个转换。
如果我们运行该程序,将观察到以下输出。
输出
File opened
Data read from file is: F
File Stream closed
C# StreamWriter
C# 中的 StreamWriter
类用于将字符写入流。它使用 TextWriter
类作为基类,并提供将数据写入文件的重载方法。
StreamWriter
主要用于将多个字符的数据写入一个文件。
例子:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApp1 {
class Program {
static void Main(string[] args) {
FileStream f = new FileStream("d:\\b.txt", FileMode.OpenOrCreate);
Console.WriteLine("File opened");
//declared stream writer
StreamWriter s = new StreamWriter(f);
Console.WriteLine("Writing data to file");
s.WriteLine("Writing data into file using stream writer");
//closing stream writer
s.Close();
f.Close();
Console.WriteLine("File Stream closed");
Console.ReadLine();
}
}
}
在初始化了FileStream
对象之后,我们还使用FileStream
对象初始化了StreamWriter
对象。然后我们使用 WriteLine
方法将单行数据写入文件。然后我们关闭 StreamWriter
,然后关闭 FileStream
。
以下代码的输出将是一个文件,其中写入了用户数据。
输出
C# StreamReader
StreamReader
用于从文件中读取字符串或大句子。StreamReader
还使用 TextReader
类作为其基类,然后提供 Reading
和 ReadLine
等方法来从流中读取数据。
读取数据示例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApp1 {
class Program {
static void Main(string[] args) {
FileStream f = new FileStream("d:\\b.txt", FileMode.OpenOrCreate);
Console.WriteLine("File opened");
//declared stream reader
StreamReader sr = new StreamReader(f);
Console.WriteLine("Reading data from the file");
string line = sr.ReadLine();
Console.WriteLine("The data from the file is : " + line);
//closing stream writer
sr.Close();
f.Close();
Console.WriteLine("File Stream closed");
Console.ReadLine();
}
}
}
这里我们使用 FileStream
从 StreamReader
创建了一个对象。然后我们使用一个简单的ReadLine
方法从文件中读取数据。我们关闭了 StreamReader
,然后关闭了 FileStream
。
上面的程序产生了以下输出:
输出
File opened
Reading data from the file
The data from the file is: Writing data into file using stream writer
File Stream closed
C# TextWriter
在 C# 中,TextWriter
类被编写为抽象类。它用于在文件中创建一系列连续的字符。它与StreamWriter
非常相似,后者也允许用户在文件中写入顺序字符或文本,但不需要为操作创建 FileStream
。
了解 TextWriter
工作原理的示例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApp1 {
class Program {
static void Main(string[] args) {
using(TextWriter writer = File.CreateText("d:\\textFile.txt")) {
writer.WriteLine("The first line with text writer");
}
Console.ReadLine();
}
}
}
上面的代码类似于 StreamWriter
。WriteLine
方法将数据写入文件中。你可以在 using
语句块中使用多个 WriteLine
方法在文件中写入多个数据。
输出将创建一个包含用户定义文本的文本文件。
输出
C# TextReader
TextReader
是 System.IO
中的另一个类。它用于从给定文件中读取文本或任何连续字符。
例子:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApp1 {
class Program {
static void Main(string[] args) {
using(TextReader txtR = File.OpenText("d:\\textFile.txt")) {
String data = txtR.ReadToEnd();
Console.WriteLine(data);
}
Console.ReadLine();
}
}
}
在上面的程序中,我们使用 TextReader
打开保存在特定位置的文件。然后我们声明了一个字符串变量来存储文件的数据。ReadToEnd
方法确保已读取文件中的所有数据。之后,我们将数据打印到控制台。
上述程序的输出将是:
The first line with text writer
结论
C# 中的 System.IO
命名空间提供了各种类和方法,使程序员能够对不同的文件进行读写操作。System.IO
包含几个类,如 FileStream
、StreamReader
、StreamWriter
、TextReader
、TextWriter
等。
所有这些类都根据需要为文件的读写操作提供了特定的实现。
代码示例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApp1 {
class Program {
static void Main(string[] args) {
FileStream f = new FileStream("d:\\b.txt", FileMode.OpenOrCreate);
Console.WriteLine("File opened");
f.WriteByte(70);
Console.WriteLine("Data written into file");
char a = (char) f.ReadByte();
Console.WriteLine("Data read from file is: " + a);
//declared stream writer
StreamWriter s = new StreamWriter(f);
Console.WriteLine("Writing data to file");
s.WriteLine("Writing data into file using stream writer");
//declared stream reader
StreamReader sr = new StreamReader(f);
Console.WriteLine("Reading data from the file");
string line = sr.ReadLine();
Console.WriteLine("The data from the file is : " + line);
//closing stream
sr.Close();
f.Close();
Console.WriteLine("File Stream closed");
using(TextWriter writer = File.CreateText("d:\\textFile.txt")) {
writer.WriteLine("The first line with text writer");
}
using(TextReader txtR = File.OpenText("d:\\textFile.txt")) {
String data = txtR.ReadToEnd();
Console.WriteLine(data);
}
Console.ReadLine();
}
}
}
相关文章
- 站长推荐