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

时间:2013-01-29 02:39:41

标签: c# .net

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

2 个答案:

答案 0 :(得分:2)

MSDN提供了如何执行这两项操作的示例

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

您还会注意到使用using关键字的两个示例。有一个解释为什么你想在这个问题中使用那个结构(可能还有很多其他的):When should I use “using” blocks in C#?

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


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

答案 1 :(得分: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();
    }
}