我想从
中的.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();
答案 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 ...)。