繁体   English   中英

C#:如何仅为文件的第一行生成 StreamContent

[英]C#: How to generate StreamContent only for first line of file

我有第一行作为标题的文件,

在此处输入图片说明

现在,我有一个只接受StreamContent的 Web API 控制器代码,

using (FileStream fs = new FileStream(@"C:\Files\test_Copy.txt", FileMode.CreateNew, FileAccess.Write))
            {
                await result.Content.CopyToAsync(fs);
            }

从客户端应用程序,我将fileStream转换为StreamContent并发布到 Web API 调用。

Content = new StreamContent(fileStream),

我可以使用以下代码发送整个文件内容。 问题:我可以只发送文件的第一行作为StreamContent吗?

在这里,我在控制台应用程序中同时使用客户端和服务器代码,

class Program
{
    static void Main(string[] args)
    {
        Get().Wait();
    }


    public static async Task<HttpResponseMessage> Get()
    {
        using (var fileStream = new FileStream(@"C:\Files\test.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
        {
            var result = new HttpResponseMessage(HttpStatusCode.OK)
            {
                //how to send only first line of file as a "Content"
                Content = new StreamContent(fileStream),
            };

            using (FileStream fs = new FileStream(@"C:\Files\test_Copy.txt", FileMode.CreateNew, FileAccess.Write))
            {
                await result.Content.CopyToAsync(fs);
            }

            return result;
        }

    }
}

如何将第一行读入MemoryStream然后将其传递给StreamContent

var memStr = new MemoryStream();
var writer = new StreamWriter(memStr);
var reader = new StreamReader(fileStream);

// Write first line to memStr
writer.Write(reader.ReadLine()); 

var result = new HttpResponseMessage(HttpStatusCode.OK)
{
    //how to send only first line of file as a "Content"
    Content = new StreamContent(memStr),
};

注意:请确保您处理这些物品

您可以使用此代码:

string line1 = File.ReadLines("MyFile.txt").First(); 
byte[] byteArray = Encoding.UTF8.GetBytes( line1 );
using (var stream = new MemoryStream( byteArray ))
{
  ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM