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

如何使用StreamWriter与StreamReader读写数组值?

使用StreamWriter和StreamReader读写char数组的解决方案

要实现用StreamWriter和StreamReader读写数组,需要解决两个核心问题:访问私有数组和流的读写逻辑实现,以下是修改后的完整代码和说明:

1. 调整Arrays类,提供数组访问权限

原Arrays类中的AlphabetValues是私有成员,需要添加公共属性让外部类可以访问:

using System;

namespace writeReadArray
{
    public class Arrays
    {
        private char[] AlphabetValues = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J' };
        
        // 公共属性,对外暴露私有数组
        public char[] GetAlphabetValues => AlphabetValues;
    }
}

2. 完善Record类的读写方法

使用using语句自动管理流资源(无需手动调用Close()),同时实现数组的写入和读取逻辑:

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

namespace writeReadArray
{
    public class Record
    {
        // 写入char数组到文件(每行一个字符)
        public void WriteFile(string filename, char[] arrayToWrite)
        {
            using (FileStream fs = new FileStream(filename, FileMode.Create, FileAccess.Write))
            using (StreamWriter sw = new StreamWriter(fs))
            {
                foreach (char c in arrayToWrite)
                {
                    sw.WriteLine(c);
                }
            }
        }

        // 从文件读取内容并还原为char数组
        public char[] ReadFile(string filename)
        {
            List<char> resultList = new List<char>();
            using (FileStream infile = new FileStream(filename, FileMode.Open, FileAccess.Read))
            using (StreamReader reader = new StreamReader(infile))
            {
                string line;
                // 逐行读取,取每行第一个字符(对应写入时的格式)
                while ((line = reader.ReadLine()) != null)
                {
                    if (!string.IsNullOrWhiteSpace(line))
                    {
                        resultList.Add(line[0]);
                    }
                }
            }
            return resultList.ToArray();
        }
    }
}

3. 调用示例

在主程序中完成数组的写入和读取验证:

using System;

namespace writeReadArray
{
    class Program
    {
        static void Main(string[] args)
        {
            Arrays arrays = new Arrays();
            Record record = new Record();
            string filePath = "alphabet.txt";

            // 写入数组到文件
            record.WriteFile(filePath, arrays.GetAlphabetValues);

            // 从文件读取数组
            char[] readArray = record.ReadFile(filePath);

            // 输出读取结果
            Console.WriteLine("读取到的数组内容:");
            foreach (char c in readArray)
            {
                Console.Write(c + " ");
            }
        }
    }
}

关键说明

  • 资源管理:using语句会自动在代码块结束后释放流资源,避免手动关闭时可能出现的异常或资源泄漏。
  • 读写格式匹配:写入时用WriteLine()让每个字符占一行,读取时对应逐行读取并提取字符;如果需要更紧凑的格式(比如逗号分隔),可以修改写入逻辑为sw.Write($"{c},"),读取时按逗号分割字符串再转换为char数组。
  • 访问权限:私有成员无法直接跨类访问,必须通过公共属性、方法等方式暴露。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:31:03