C#从文本文件中检索不同的数据类型数据并将其存储到变量

时间:2018-10-11 18:34:40

标签: c# file

所以我遇到了什么问题-我试图创建一个复杂的(对我来说很复杂)的银行管理系统。它从一个人那里获取各种数据。它需要字符串和整数。我设法将数据存储到文本文件中。

文本文件如下所示:

密码:74016 | NAME:任何名字|年龄:18 |姓氏:anylastname |平衡:300 |帐户类型:储蓄帐户|

(此数据在文本文件的一行中)

这是我存储它的方式:

              var StoreInFile = new StreamWriter(@"C:\Accounts.txt", true);


                StoreInFile.Write("AccountID: " + AccID + " | ");
                StoreInFile.Write("NAME: " + _Name + " | ");
                StoreInFile.Write("AGE: " + _Age + " | ");
                StoreInFile.Write("LASTNAME: " + _LastName + " | ");
                StoreInFile.Write("BALANCE: " + Balance + " | ");
                StoreInFile.Write("ACCOUNT TYPE: " + accountType + " | ");
                StoreInFile.WriteLine(" ");
                StoreInFile.WriteLine(" ");

                StoreInFile.Close();

现在的问题是如何从中获取数据?我如何将所有这些不同的字符串/整数存储回变量,然后在哪里可以操纵它们?

理想情况下,我只想在登录时输入AccountID,然后它将所有Name,LastName,Age ...等数据自动存储到该行代码中的变量中。希望我的问题清楚。

3 个答案:

答案 0 :(得分:0)

var properties = new prop();
var json = JsonConvert.SeralizeObject(properties);

public class prop 
{
     public string account_id { get; set;}
     public string name { get; set;}
     public int age { get; set;}

}

这样的事情会帮助你很多。

答案 1 :(得分:0)

您可以使用所使用的属性创建帐户类:

class Account
{
    public int Id { get; set;}
    public string Name { get; set;}
    public int Age{ get; set;}
    public string Lastname { get; set;}
    public int Balance { get; set;}
    public string AccountType { get; set;} // this is better to be enum but your example shows you have stored string
}

然后,您可以创建Account类的实例,并读取文件并用|拆分文件,然后设置其属性(在需要时解析为int):

string[] data = File.ReadAllText("filepath.txt").Split('|');
Account account = new Account();
foreach (string item in data)
{
    string[] sitem = item.Split(':');
    switch(sitem[0].Trim())
    {
        case "AccountID":
           account.Id = int.Parse(sitem[1]); break;
        case "Name":
           account.Name = int.Parse(sitem[1]); break;  
           ....
    }
}

答案 2 :(得分:0)

实际上,我建议您将其保留为Json / XML格式。 但是也许 BinaryFormatter 在这里可以帮助您使用一些示例;

class Program {
    static void Main (string[] args) {
        // Create Object
        Account account = new Account {

            Id = 100,
            Name = "Berkay"
        };

        // You can use BinaryFormatter 
        IFormatter formatter = new BinaryFormatter ();
        Stream stream = new FileStream ("D:\\account.txt", FileMode.Create, FileAccess.Write);

        formatter.Serialize (stream, account);
        stream.Close ();

        stream = new FileStream ("D:\\account.txt", FileMode.Open, FileAccess.Read);
        Account readAccount = formatter.Deserialize(stream) as Account;

        System.Console.WriteLine(readAccount.Id);
        System.Console.WriteLine(readAccount.Name);

        Console.ReadLine();
    }

}

    // Serializable attribute
    [Serializable]
    public class Account {
    public int Id { get; set; }
    public string Name { get; set; }
}