使用序列化将数据读入和写入记事本

时间:2012-06-15 10:37:56

标签: c# serialization read-write

我在使用序列化将数据读入和写入文件记事本时遇到问题 基本上就是登录和注册 我会在这里给我的代码 这是注册表单的一部分:

public partial class formSignUp : Form
    {
        List<data> game = new List<data>();
        data dt = new data();

        public formSignUp()
        {
            InitializeComponent();
        }        

        private void write()
        {
            try
            {
                using (Stream stream = File.OpenWrite("game.txt"))
                {
                    BinaryFormatter bin = new BinaryFormatter();
                    bin.Serialize(stream, dt);
                }
            }
            catch (IOException)
            {

            }
        }

        private void butRegister_Click(object sender, EventArgs e)
        {
            write();
            dt = new data(tbUName.Text, tbPass1.Text);
            game.Add(dt);
        }
    }

然后这是类数据代码:

[Serializable()]
    class data
    {
        private string username;
        private string password;

        public string Username
        {
            get { return username; }
            set { username = value; }
        }

        public string Password
        {
            get { return password; }
            set { password = value; }
        }

        public data(string username, string password)
        {
            this.username = username;
            this.password = password;
        }

        public data()
        { 

        }
    }

我将文件记事本放在文件夹“bin”中,名称为“game.txt”

问题是,每当我调用“write()”时,写入文件“game.txt”的字符就是如此奇怪的字符。到目前为止我得到了:

ÿÿÿÿ          <Login, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null   

Login.data usernamepassword

任何人都可以帮助我吗? 非常感谢提前 此致

1 个答案:

答案 0 :(得分:1)

那是因为您正在使用BinaryFormatter,它会输出二进制数据。您应该使用其中一个文本格式化程序。有SoapFormatterDataContractJsonSerialized,但它可能不适合您。