1

我正在尝试制作一个 Stream Writer,然后将一些输入从控制台写入文件,然后读出内容。唯一的问题是我想用两种不同的方法来做。从这里写:从这里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.
}
4

2 回答 2

2

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

从他的示例中可以看出,您不需要将字符串转换为字符数组来编写它们。

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

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


根据您似乎刚刚开始编程的代码,请考虑将您的代码放在CodeReview上。这样,您可以获得有关如何编写更好代码的有用提示。

于 2013-01-29T02:59:36.907 回答
1
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();
    }
}
于 2013-01-29T02:49:26.320 回答