【问题标题】:C# retrieve different Data Types data from a text file and store it to variablesC# 从文本文件中检索不同的数据类型数据并将其存储到变量中
【发布时间】:2018-10-11 18:34:40
【问题描述】:

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

文本文件如下所示:

AccID:74016 |姓名:任何姓名 |年龄:18 |姓氏:任何姓氏|余额: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 等数据存储到代码中的变量中,这些变量位于该行中。希望我的问题很清楚。

【问题讨论】:

  • 您可能想研究序列化(以及类和集合)
  • 最好使用结构化文本文件格式,例如 XML 或 JSON。
  • 如果您想要名称/值对,为什么不使用 csv 库?使用 NuGet 的应用程序中有很多可用且易于包含的内容。我最喜欢的恰好是CsvHelper 如果你想在文件中存储结构化或关系数据,那么使用 JSON(使用json.net 也很简单。总之,无需重新发明轮子。
  • 伙计们,很多。我一定会做一个研究,对你提到的事情有一个很好的了解。
  • 使用 Json 或 XML 更简单。

标签: c# file


【解决方案1】:
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;}

}

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

【讨论】:

    【解决方案2】:

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

    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;  
               ....
        }
    }
    

    【讨论】:

      【解决方案3】:

      实际上,我建议您将其保留为 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; }
      }
      

      【讨论】:

      • 这可能对我将来有很大帮助。谢谢老兄
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-12
      • 1970-01-01
      • 1970-01-01
      • 2018-02-08
      • 1970-01-01
      • 2021-07-10
      • 2021-12-25
      相关资源
      最近更新 更多