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

如何在C#中写入每行长度固定的文本文件?

固定行宽文本文件写入的通用解决方案

需求说明

要将数据写入文本文件,要求所有行长度完全一致(不足部分自动补空格),确保后续可以精准读取任意指定行。当前使用的代码无法实现该效果,手动补空格的方式不具备通用性。

当前代码:

StreamWriter stw = File.CreateText("output.txt");
foreach (var result in resultData)
{
    stw.WriteLine($"{result.Value}:{result.Date}");
}

通用实现方案

核心是利用C#的字符串格式化/填充功能,为每个数据段设置固定宽度,以下提供两种实用方案:

方案1:预设固定宽度(适合已知数据长度范围的场景)

直接在字符串插值中使用对齐语法,指定每个字段的占用宽度,不足部分自动补空格:

// 用using自动管理文件资源,避免遗漏关闭
using (StreamWriter stw = File.CreateText("output.txt"))
{
    foreach (var result in resultData)
    {
        // -15表示左对齐占15个字符,-20表示左对齐占20个字符,可按需调整宽度
        string fixedWidthLine = $"{result.Value,-15}:{result.Date,-20}";
        stw.WriteLine(fixedWidthLine);
    }
}

如果需要右对齐,去掉数字前的负号即可,比如{result.Value,15}

方案2:动态计算最大宽度(适配任意数据长度的通用场景)

先遍历所有数据,计算出每个字段的最大长度,再以此为基准填充空格,确保每行长度一致:

if (!resultData.Any()) return;

// 计算Value和Date字段的最大字符长度
int maxValueLen = resultData.Max(r => r.Value.ToString().Length);
int maxDateLen = resultData.Max(r => r.Date.ToString().Length);

using (StreamWriter stw = File.CreateText("output.txt"))
{
    foreach (var result in resultData)
    {
        // PadRight将字符串填充到指定长度,不足补空格
        string valueSegment = result.Value.ToString().PadRight(maxValueLen);
        string dateSegment = result.Date.ToString().PadRight(maxDateLen);
        stw.WriteLine($"{valueSegment}:{dateSegment}");
    }
}

若需要右对齐,替换PadRight为PadLeft即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:52:44