从c#中的文件中读取特定内容

时间:2014-09-07 10:28:20

标签: c# file

我想从

中的.ser(Java序列化对象)文件中检索用户名和密码

我在创建用户时保存的C#。

ArrayList spnavn;
spnavn = FileController.ReadFile(Server.MapPath 
("~/App_Data/MinPlayers.ser"));  
Application.Set("Players", spnavn);

用户也有ID等值,但我只想取出名称和密码,这样用户就可以将这些作为登录使用。

我能以某种方式执行.getName或.getpassword从文件中删除吗?还是其他任何解决方案?

基本上我是通过网站管理员页面创建一些用户并将它们放入名为MinPlayers.ser的文件中。所以我想再次从中获取信息,但我想要的唯一信息是名称和密码,它将在我的首页的登录表单中使用

public class FileController
{
    public static void Writefile(ArrayList a, string filnavn)
    {
        FileStream fs = new FileStream(filnavn, FileMode.Create, 

FileAccess.Write, FileShare.None);
        BinaryFormatter bf = new BinaryFormatter();
        bf.Serialize(fs, a); // tag vores object, lav til binary 

string, og smid den videre
        fs.Close();
    }
    public static ArrayList ReadFile(string filnavn)
    {
        FileStream fs = new FileStream(filnavn, FileMode.Open, 

FileAccess.Read);
        BinaryFormatter bf = new BinaryFormatter();
        ArrayList a = (ArrayList)bf.Deserialize(fs);
        fs.Close();
        return a;

    }

}

http://msdn.microsoft.com/en-us/library/e474a3yk.aspx

如果你看看我发布的链接:我想例如从你的文件中获取customerAddress.Region和customerAddress.City而不是所有值的WHOLE字符串?

customerAddress.Street = "1111 White Street";
customerAddress.City = "Sturtevant";
customerAddress.Region = "WI";
customerAddress.PostalCode = "53177";
customerAddress.CacheAddress();

1 个答案:

答案 0 :(得分:0)

首先,当您使用.NET BinaryFormatter.Serialize方法时,您没有提出Java序列化对象,因为您肯定不会在J#中开发。因此,您提供的MSDN链接无关紧要。

使用您提供的代码,并提供某种Serializable User类:

[Serializable]
public class User
{
  public string id;
  public string pwd;
  public string someOtherInterestingStuff;
}

这应该可以正常工作:

public void Test()
{
  ArrayList a = new ArrayList();
  a.Add(new User() {id = "001", pwd = "pass1"});
  a.Add(new User() {id = "002", pwd = "pass2"});
  Writefile(a, "testusers.bin");
  a = ReadFile("testusers.bin");
  User user = (User) a[0];
  Console.WriteLine(user.id + " " + (user.pwd);
}

其他属性仍然存在,但您不必使用它,所以这应该不是问题。或者是吗?如果答案是肯定的,请检查this

请注意以这种方式存储登录名/密码(即使是二进制形式)也不安全。考虑使用其他东西(例如ASP.NET Identity ...)。