在 C# 中将字符串转换为 IInputStream

Convert string to IInputStream in C#

有没有比这个更好的方法来实现从常规(大)字符串到 IInputStream 的转换:

public static async Task<IInputStream> ToInputStream(this string input)
{
    byte[] bytes = Encoding.UTF8.GetBytes(input);

    var memoryStream = new InMemoryRandomAccessStream();
    await memoryStream.WriteAsync(bytes.AsBuffer());
    await memoryStream.FlushAsync();
    memoryStream.Seek(0);

    return memoryStream;
}

好的,好像还有更短的版本:

public static IInputStream ToInputStream(this string input)
{
    byte[] bytes = Encoding.UTF8.GetBytes(input);
    MemoryStream stream = new MemoryStream(bytes);
    return stream.AsRandomAccessStream();
}

DataWriter.WriteString() 可用于此。它以特定格式写入值,因此请检查以确保这是您想要的。

正如 Chris Guzak 所建议的,这里是另一个版本,基于 DataWriter.WriteString():

public async static Task<IInputStream> ToInputStreamAsync(this string input)
{
    var ms = new InMemoryRandomAccessStream();

    using(var dw = new DataWriter(ms))
    {
        dw.WriteString(input);
        await dw.StoreAsync();
        dw.DetachStream();
    }

    return ms;
}

虽然不确定哪个更好。