You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从二进制文件读取内容并在ListBox中显示的格式问题求助

解决ListBox中二进制读取内容并排显示的问题

嘿,我懂你遇到的这个小麻烦!ListBox里数据挤在一行,肯定是读取的时候没把每条数据单独添加成ListBox的项,而是一股脑拼成了一个长字符串塞进去了。咱们一步步来解决:

首先,先确认你的写入逻辑是对的——用BinaryWriter写入数据时,每条数据要单独调用Write()方法(比如写字符串用Write(string),写数值用Write(int)),这样每条数据在二进制文件里是独立的单元。

然后重点看读取逻辑,这是你问题的核心:不要把所有读取到的内容拼接成一个字符串再添加,要读一条就往ListBox里加一条。

给你举个完整的示例:

写入二进制文件的代码(比如button1_Click)

private void button1_Click(object sender, EventArgs e)
{
    // 用using自动释放文件资源,避免占用
    using (BinaryWriter bw = new BinaryWriter(File.Open("testData.bin", FileMode.Create)))
    {
        // 逐条写入测试数据,字符串和数值都可以
        bw.Write("用户ID: 001");
        bw.Write("用户名: Adi");
        bw.Write("积分: 1500");
        bw.Write(2024); // 写入一个整数
    }
}

读取并显示到ListBox的代码(比如button2_Click)

private void button2_Click(object sender, EventArgs e)
{
    listBox1.Items.Clear(); // 先清空ListBox原有内容
    using (BinaryReader br = new BinaryReader(File.Open("testData.bin", FileMode.Open)))
    {
        // 循环读取直到文件末尾
        while (br.BaseStream.Position != br.BaseStream.Length)
        {
            // 注意:读取的类型必须和写入的类型严格对应!
            // 这里前三条是字符串,最后一条是int,所以要分情况读(或者统一写入字符串)
            if (br.BaseStream.Position < br.BaseStream.Length - sizeof(int))
            {
                string dataStr = br.ReadString();
                listBox1.Items.Add(dataStr); // 每条数据单独加,自动换行
            }
            else
            {
                int dataInt = br.ReadInt32();
                listBox1.Items.Add($"年份: {dataInt}"); // 转成字符串再添加
            }
        }
    }
}

关键要点提醒:

  • 类型匹配:写入时用Write(string),读取就必须用ReadString();写入int就用ReadInt32(),类型不匹配会直接抛出异常。
  • 逐条添加:每次读取一条数据就调用listBox1.Items.Add(),这样ListBox会把每个Add的内容当成单独的一行显示。
  • 避免拼接:如果像下面这样写,肯定会并排显示,这是错误的写法:
    // ❌错误示例:拼接成大字符串再添加,导致所有内容在一行
    string allContent = "";
    while (br.BaseStream.Position != br.BaseStream.Length)
    {
        allContent += br.ReadString();
    }
    listBox1.Items.Add(allContent);
    

如果你的数据是自定义对象,那需要先序列化对象再写入,读取时反序列化后逐个添加到ListBox就行。

内容的提问来源于stack exchange,提问作者Adi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:29:50