将StreamReader转换为流

本文关键字:转换 StreamReader | 更新日期: 2023-09-27 18:01:27

protobuff.net中的Deserialize方法接受流作为参数。在我使用FileStream并通过它之前,它工作了,但现在我必须使用StreamReader,因为我正在将应用程序移植到windows商店/手机上。我得到以下错误:

 error CS1503: Argument 1: cannot convert from 'System.IO.StreamReader' to 'System.IO.Stream'

这也是一个unity3d项目我得到的另一个错误是:

error CS4028: 'await' requires that the type 'Windows.Foundation.IAsyncOperation<Windows.Storage.StorageFolder>' have a suitable GetAwaiter method. Are you missing a using directive for 'System'?

这很奇怪,因为我在#if NETFX_CORE #endif中包装了代码以下是我正在使用的include:

#if NETFX_CORE
using System.IO;
using System.Threading.Tasks;
using Windows.Storage;
#endif

将StreamReader转换为流

不能,逻辑上- StreamReader用于文本数据,而protobuf数据用于二进制数据。目前还不清楚您从哪里获得StreamReader,但您应该寻找为二进制数据设计的api。

在实践中,您可能能够使用StreamReader.BaseStream来获取底层流,但您不应该创建StreamReader来读取非文本数据…构造阅读器可能会尝试从流中读取文本数据,如果找不到则会报错。