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

时间:2015-04-01 23:23:19

标签: c# windows-runtime windows-phone-8.1 windows-8.1 win-universal-app

是否有更好的方法来实现从常规(大)字符串到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;
}

3 个答案:

答案 0 :(得分:2)

好的,看起来版本有点短:

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

答案 1 :(得分:2)

根据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;
}

虽然不确定哪一个更好。

答案 2 :(得分:1)

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