解决 反序列化txt文件中的所有数据时遇到问题。

袜子1992

知名会员
已加入
2020年5月20日
留言内容
57
编程经验
Beginner
我可以将多个患者添加到txt文件中,但是当我尝试从该文件中读取所有数据时,它只会打印一个患者。

其次,当我添加患者时,如何将其移至下一行?此刻,患者在第一位患者的同一行上被追加。

有人可以帮我吗?谢谢





C#:
            List<User> PInfo = new List<User>();



            if (File.Exists("PInfo.txt"))
            {
                Stream stream = File.Open("PInfo.txt", FileMode.Append);
                BinaryFormatter bf = new BinaryFormatter();
                bf.Serialize(stream, patient);
                stream.Close();
                stream.Position = 0;
                Console.Clear();
                DisplayMenu();
            }
            else
            {
                Stream stream = File.Open("PInfo.txt", FileMode.Create);
                BinaryFormatter bf = new BinaryFormatter();
                bf.Serialize(stream, patient);
                stream.Close();
                stream.Position = 0;
                Console.Clear();
                DisplayMenu();
            }
     public static void ViewAllRecords()
        {
       
            string choice;
            object obj = null;
                 
            Stream stream = File.Open("PInfo.txt", FileMode.Open);      
            BinaryFormatter bf = new BinaryFormatter();
            obj = (User)bf.Deserialize(stream);      
            stream.Flush();                            
            stream.Close();
            Console.Clear();
     
            Console.WriteLine(obj.ToString());        
            Console.ReadLine();

     }
     
}
 
Last edited:

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,501
地点
悉尼,澳大利亚
编程经验
10+
您需要调试代码。在顶部设置一个断点,然后逐行浏览。然后,您将能够准确了解其行为在何处以及与您的预期有何不同。即使您仍然不能自己解决问题,至少您也可以向我们提供所有相关信息。
Secondly...
请将每个主题归为一个主题,将每个主题归为一个主题。这样,我们就不会有多个相互交叉的对话或一个跨线程中断的对话。如果合适,您可以在单独的线程中同时询问多个问题,仅在每个线程中提供与该问题相关的内容。否则,您可以先问一个问题,待回答后再问是否仍然需要。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,497
地点
弗吉尼亚州切萨皮克
编程经验
10+
您应该序列化和反序列化整个列表,而不仅仅是序列化单个患者并将其附加到文件中。

无论如何,在第50行上,您仅反序列化了单个项目。为什么只惊讶一件商品呢?
 
最佳 底部