如何在一种方法中写入文本文件,然后从另一种方法读取

本文关键字:方法 文件 文本 然后 读取 另一种 一种 | 更新日期: 2023-09-27 17:56:20

我正在尝试制作流编写器,然后将控制台中的一些输入写入文件,然后读出内容。唯一的问题是我想用两种不同的方法做到这一点。从这里写:addbook(),从这里读:list_books() .但是我无法从该文件读取,因为流读取器不允许我访问要再次使用的任何变量或该文件。

//So I am trying to write from the static void addbook method and then read from the static void list_books method
//I want to Write from one static void and then I want  to read them from a different method.
static void addbook()
{
    //Here is where I get my strings that I will write
    Console.Write("Book Title:");
    string title = Console.ReadLine();
    Console.Write("ISBN#:");
    string isbn = Console.ReadLine();
    Console.Write("Author:");
    string author = Console.ReadLine();
    Console.Write("Publish Date:");
    string publish_date = Console.ReadLine();
    //Here Is where I create the Stream Reader and Writer
    //And where I write to the file
    var fs = File.Open("Librarybooks.txt", FileMode.OpenOrCreate,FileAccess.ReadWrite);
    var sw = new StreamWriter(fs);
    var sr = new StreamReader(fs);
    sw.WriteLine(title.ToCharArray());
    sw.WriteLine(isbn.ToCharArray());
    sw.WriteLine(author.ToCharArray());
    sw.WriteLine(publish_date.ToCharArray());
    Console.WriteLine("Book added Successfully!!");
}
static void list_books()
{
    //Here is where I want to read from so I can just call the list_books method.
    //But I can't access the StreamReader or StreamWriter
    //I just want to be able to read from the file.
}

如何在一种方法中写入文本文件,然后从另一种方法读取

MSDN 提供了如何执行这两件事的示例

  • 如何:向文件写入文本
  • 如何:从文件中读取文本

从示例中可以看出,您无需将字符串转换为字符数组即可编写它们。

您还会注意到这两个示例都使用 using 关键字。 有一个解释,为什么你想在这个问题(可能还有许多其他问题)中使用该结构:我什么时候应该在 C# 中使用"使用"块?

看起来您已经喜欢File类,您可以利用其中专门为处理文本文件而设计的其他方法。 您可以决定是要根据行还是整个内容写入/读取文件。 这里有如何使用 File 类的示例:

  • 如何:写入文本文件
  • 如何:从文本文件中读取

根据代码看起来你刚刚开始编程,考虑把你的代码放到CodeReview上。 通过这种方式,您可以获得有关如何编写更好代码的有用提示。

private const string FILE_PATH = "Librarybooks.txt";
static void addbook()
{
    //Here is where I get my strings that I will write
    Console.Write("Book Title:");
    string title = Console.ReadLine();
    Console.Write("ISBN#:");
    string isbn = Console.ReadLine();
    Console.Write("Author:");
    string author = Console.ReadLine();
    Console.Write("Publish Date:");
    string publish_date = Console.ReadLine();
    //Here Is where I create the Stream Reader and Writer
    //And where I write to the file
    using (var fs = File.Open(FILE_PATH, FileMode.OpenOrCreate,FileAccess.ReadWrite))
    {
        using (var sw = new StreamWriter(fs))
        {
            using (var sr = new StreamReader(fs))
            {
                sw.WriteLine(title.ToCharArray());
                sw.WriteLine(isbn.ToCharArray());
                sw.WriteLine(author.ToCharArray());
                sw.WriteLine(publish_date.ToCharArray());
                Console.WriteLine("Book added Successfully!!");
             }
         }
     }
}
static void list_books()
{
    using (StreamReader sr = new StreamReader(FILE_PATH))
    {
       string fileContent = sr.ReadToEnd();
    }
}