是否有更好的方法来实现从常规(大)字符串到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;
}
答案 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()可用于此目的。它以特定格式写入值,因此请检查以确保这是您想要的。