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

使用HttpClient.GetStreamAsync下载文件时保留CRLF换行符

解决GitHub文件下载保留CRLF换行符的问题

当前代码出现换行符转换的核心原因是:你使用的GitHub链接是文件的网页浏览链接(包含blob路径),这类链接返回的是GitHub处理后的内容,会自动将CRLF转为LF。要保留原始换行符,必须使用GitHub的原始文件链接,同时确保流复制过程不修改二进制内容。

解决方案步骤

  • 替换GitHub文件链接中的blob为raw,获取原始文件的直接下载地址。例如:
    • 原链接:https://github.com/xxx/yyy/blob/main/mytext.txt
    • 修改后:https://github.com/xxx/yyy/raw/main/mytext.txt
  • 保持HttpClient的流复制逻辑不变(FileStream默认以二进制模式写入,不会修改换行符)。

修改后的代码示例

// 注意:这里要使用替换后的raw链接
string AlinktofileCM = destinationOnGithub.Replace("blob", "raw") + "mytext.txt";
string linktofileCM = destinationOnMyPc + "mytext.txt";

using (var client = new HttpClient())
{
    using (var stream = await client.GetStreamAsync(AlinktofileCM))
    {
        using (var fs = new FileStream(linktofileCM, FileMode.OpenOrCreate))
        {
            await stream.CopyToAsync(fs);
        }
    }
}

补充说明

  • 建议使用await异步调用替代.Result,避免阻塞线程和潜在的死锁问题。
  • 原始文件链接返回的是文件的二进制原始数据,完全保留文件在GitHub仓库中的格式,包括CRLF换行符,和手动下载的效果一致。

内容的提问来源于stack exchange,提问作者Jean-Francois Demers

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 05:05:20