简单I/O(读取文本文件)

本文关键字:取文本 文件 读取 简单 | 更新日期: 2023-09-27 18:12:58

我在网上查找了一个简单的文件读写示例。作为一个python专业的毕业生,转向c#对我来说是一个很大的进步,但我真的很喜欢这门语言。

我看到人们用StringReader, FileSystem做文件I/O,我听说Stream也被使用。作为一个语言的初学者,一个不知道太多复杂概念的人(但有基本的东西,方法,类,函数),我该如何正确地读取文件?我看到人们使用"using"关键字,然后将其视为类或方法。我完全不知道这是怎么回事。我在找像

这样的东西
    FileSystem() f = file.read("test.txt")
    f.DoStuff()

在python中,使用存储在另一个文件中的字典非常容易。我所要做的就是:

    import Dict.py
    # Now i have access to all of Dict's dictionaries. We'll say the name of one
    # of the dictioanries is "f".
    print Dict.f[1] # Or whatever. Now i can use the dictionary f like it was local.

我的目标是做一款绞刑游戏。我试图从单词列表(英语字典)中随机选择一个单词,并让他们猜测该单词,但我不知道如何做诸如读取文件和导入其内容之类的事情。同样,尽可能简单,让初学者也能理解,这是非常有帮助的。万分感谢!

简单I/O(读取文本文件)

这里有一些在c#中做IO的最重要的类:

原始二进制IO

  • Stream:它是表示顺序字节流的所有类的基类。流可以是只读、只读或读写。给出了ReadWriteSeek等方法。请记住,流用于访问原始二进制数据;根据您想要做的事情,直接使用它可能不太方便。
    • FileStream:在文件中读取和/或写入数据的流。
    • MemoryStream:在内存中读写数据的流。

文本IO

  • TextReader:它是用于读取字符序列的所有类的基类。它提供了ReadReadLineReadToEnd等方法。

    • StreamReader:从Stream读取文本的TextReaderStreamReader总是有一个Encoding (UTF-8, ASCII等),指定如何将二进制数据从流转换为文本。
    • StringReader:从String读取文本的TextReader(用于处理内存中的字符串,就好像它是文件的内容一样)
  • TextWriter:它是用于编写字符序列的所有类的基类。它提供了WriteWriteLine等方法。

    • StreamWriter:向Stream写入文本的TextWriter。像StreamReader一样,它有一个Encoding来指定如何将文本转换为二进制数据。
    • StringWriter:向StringBuilder写入文本的文本写入器

.NET框架还提供了一个名为File的帮助类来简化IO操作:

  • ReadAllBytes方法以字节数组的形式返回文件的所有内容
  • ReadAllText方法以字符串形式返回文件的所有内容
  • ReadAllLines方法将文件中的所有文本行作为字符串数组返回
  • WriteAllBytes方法将指定的字节数组写入文件(替换现有的内容)
  • WriteAllText方法将指定的字符串写入文件(替换现有的内容)
  • WriteAllLines方法将指定的文本行写入文件(替换现有的内容)

有关详细信息,请阅读MSDN

上的System.IO名称空间文档。

C#有很好的内置方法,可以让您轻松地读取&操作文件内容。例如,如果您想从文件中读取所有行,您可以简单地使用File.ReadAllLines方法:

var lines = File.ReadAllLines("your file path");

如果您想要排除某些行,您可以使用File.ReadLines方法与Linq:

var filteredLines = File.ReadLines("your file path")
                    .Where(line => yourCondition)
                    .ToArray();

这只是两个简单的例子。查看文档了解更多细节:

  1. File Class
  2. 文件和流I/O