在 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;
}
虽然不确定哪个更好。
有没有比这个更好的方法来实现从常规(大)字符串到 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;
}
虽然不确定哪个更好。