如何使用StreamWriter写入文件? [英] How to Write to a file using StreamWriter?

查看:202
本文介绍了如何使用StreamWriter写入文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的Wpf应用程序中我使用的是Person类(即基类),它包含一个虚方法SaveData(),以及其他继承自Person的类Client。如何覆盖方法SaveData()并保持数据基数?

in my Wpf app I'm using a class Person (that is a base class), and that contains a virtual method SaveData(), and other class Client that inherits from Person. How to override method SaveData() and keeping data from base?

类人物

public virtual void SaveData()
        {
            string arqName = string.Format("Person{0}" + ".txt", Id);
            StreamWriter file = new StreamWriter(arqNome);
            file.WriteLine("ID: " + Id);
            file.WriteLine("DOB: " + dOB);
            file.WriteLine("Name: " + name);
            file.WriteLine("Age: " + age);
            file.Flush();
            file.Close();
        }

Class Client

Class Client

public override void SaveData()
        {
            base.SaveData();
            string arqName = string.Format("Person{0}" + ".txt", Id);
            StreamWriter file = new StreamWriter(arqNome);
            file.WriteLine("Cod: " + cod);
            file.WriteLine("Credits: " + credits);
            file.Flush();
            file.Close();
        }

Client中的覆盖方法确实覆盖了其他数据,如Name,Age,DOB ...我需要在同一个文件中保留两个。

The override method in Client is indeed override others data as Name, Age, DOB... I need to mantains both in same file.

推荐答案

StreamWriter是流装饰器,因此您可以更好地实例化FileStream并传递它到StreamWriter构造函数。因此,您可以自定义它。追加模式打开文件并将指针移动到文件末尾,因此您要编写的下一个内容将被追加。并使用使用指令显式调用 Close()

Person class SaveData( ):

StreamWriter is stream decorator, so you better instantiate FileStream and pass it to the StreamWriter constructor. Thus you can customize it. Append mode opens file and moves pointer to the end of file, so the next thing you write will be appended. And use using directive insted of explicitly calling Close():
Person class SaveData():

using (var fileStream = new FileStream(String.Format("Person{0}.txt", Id), FileMode.OpenOrCreate))
using (var streamWriter = new StreamWriter(fileStream))
{
    streamWriter.WriteLine("ID: " + Id);
    streamWriter.WriteLine("DOB: " + dOB);
    streamWriter.WriteLine("Name: " + name);
    streamWriter.WriteLine("Age: " + age);
}

客户端类SaveData():

Client class SaveData():

base.SaveData();
using (var fileStream = new FileStream(String.Format("Person{0}.txt", Id), FileMode.Append))
using (var streamWriter = new StreamWriter(fileStream))
{
    streamWriter.WriteLine("Cod: " + cod);
    streamWriter.WriteLine("Credits: " + credits);
}

这篇关于如何使用StreamWriter写入文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆