技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

C# FileStream、StreamWriter、StreamReader、TextWriter、TextReader

作者:admin    时间:2023-6-13 12:29:23    浏览:

在本教程中,你将了解 System.IO,它是一个 C# 命名空间。此命名空间提供 C# 类(例如 FileStreamStreamWriterStreamReader)来处理文件 I/O。

文件基本上是存储在内存中特定给定目录中的系统对象,具有适当的名称和扩展名。在 C# 中,如果我们将文件用于写入或读取数据,我们将其称为流。

在本教程中,我们将研究用于从给定文件检索数据的输入流和用于将数据放入文件的输出流。

 C# FileStream、StreamWriter、StreamReader、TextWriter、TextReader

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 文件。

使用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");
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# StreamWriter 写入一个文件

C# StreamReader

StreamReader 用于从文件中读取字符串或大句子。StreamReader 还使用 TextReader 类作为其基类,然后提供 ReadingReadLine 等方法来从流中读取数据。

读取数据示例:

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

这里我们使用 FileStreamStreamReader 创建了一个对象。然后我们使用一个简单的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();
    }
  }
}

上面的代码类似于 StreamWriterWriteLine 方法将数据写入文件中。你可以在 using 语句块中使用多个 WriteLine 方法在文件中写入多个数据。

输出将创建一个包含用户定义文本的文本文件。

输出

C# TextWriter 创建并写入数据到文件 

C# TextReader

TextReaderSystem.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 包含几个类,如 FileStreamStreamReaderStreamWriterTextReaderTextWriter 等。

所有这些类都根据需要为文件的读写操作提供了特定的实现。

代码示例

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

相关文章

x
  • 站长推荐
/* 左侧显示文章内容目录 */