C#第八章课后习题P211页3-4:创建并操作二进制文件以存储个人信息

文章目录


  1. 定义Person结构体
internal struct Person
{
    public string Name;
    public int Age;
    public bool IsMember;

    public Person(string name, int age, bool isMember)
    {
        Name = name;
        Age = age;
        IsMember = isMember;
    }
}

Person结构体包含三个字段:Name(姓名,字符串类型)、Age(年龄,整型)和IsMember(会员资格,布尔型)。构造函数允许我们创建具有初始值的Person实例。

  1. 编写Main方法
static void Main(string[] args)
{
    Person[] people = new Person[]
    {
        new Person("Alice", 30, true),
        new Person("Bob", 25, false),
        new Person("Charlie", 35, true)
    };

    WritePeopleToFile(people);
}

Main方法是程序的入口点。在这里,我们创建了一个Person数组并初始化了一些示例数据。然后,我们调用WritePeopleToFile方法将这些数据写入文件。

  1. 实现WritePeopleToFile方法
public static void WritePeopleToFile(Person[] people)
{
    using (FileStream fileStream = new FileStream(filePath, FileMode.Create))
    {
        BinaryWriter binaryWriter = new BinaryWriter(fileStream, Encoding.UTF8);

        foreach (Person person in people)
        {
            binaryWriter.Write(person.Name);
            binaryWriter.Write(person.Age);
            binaryWriter.Write(person.IsMember);
        }
    }

    Console.WriteLine("信息已写入文件。");
}

WritePeopleToFile方法接收一个Person数组作为参数,并使用FileStream以创建模式打开一个二进制文件。我们使用BinaryWriter来写入姓名、年龄和会员资格信息。BinaryWriter是一个方便的类,用于将数据直接写入二进制流中。循环遍历每个人,将他们的信息写入文件。

  1. 文件路径和编码
private static string filePath = "people.bin"; // 二进制文件路径

我们定义了一个私有静态变量filePath来存储二进制文件的路径。这里,我们将其命名为people.binBinaryWriter使用UTF-8编码来写入字符串数据,这是一种广泛支持的字符编码。

全部代码

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;

namespace P3_4
{
    // 定义一个结构体来存储人的姓名、年龄和会员资格
    internal struct Person
    {
        public string Name;
        public int Age;
        public bool IsMember;

        public Person(string name, int age, bool isMember)
        {
            Name = name;
            Age = age;
            IsMember = isMember;
        }
    }

    internal class Program
    {
        private static string filePath = "people.bin"; // 二进制文件路径

        // 程序的主入口点
        static void Main(string[] args)
        {
            // 创建一个Person数组来存储几个人的信息
            Person[] people = new Person[]
            {
                new Person("Alice", 30, true),
                new Person("Bob", 25, false),
                new Person("Charlie", 35, true)
            };

            // 将这些人的信息写入二进制文件
            WritePeopleToFile(people);
        }

        // 将Person数组写入二进制文件
        public static void WritePeopleToFile(Person[] people)
        {
            // 使用FileStream以二进制写入模式打开文件
            using (FileStream fileStream = new FileStream(filePath, FileMode.Create))
            {
                BinaryWriter binaryWriter = new BinaryWriter(fileStream, Encoding.UTF8); // 创建BinaryWriter

                // 遍历Person数组,将每个人的信息写入文件
                foreach (Person person in people)
                {
                    binaryWriter.Write(person.Name); // 写入姓名
                    binaryWriter.Write(person.Age); // 写入年龄
                    binaryWriter.Write(person.IsMember); // 写入会员资格
                }
            }

            Console.WriteLine("信息已写入文件。");
            Console.ReadKey();
        }
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值