WinRT 中RandomAccessStreamReference的使用

6 篇文章 0 订阅
3 篇文章 0 订阅

      RandomAccessStreamReference是WinRT中的一个类,从API文档中,可以得知,它的作用是为一个文件提供随机访问的输入或者输出流。对比发现,只要Windows.Storage.Streams空间中带个Reference的,都是称为提供某某流,相当于一个流生成类,目前除了接口定义出的IInputStreamReference、IRandomAccessStreamReference以及上诉的RandomAccessStreamReference(对IRandomAccessStreamReference的实现),就没有看见其他的了,奇怪的是没有对应的IOutputStreamRefrence。

     具体来看RandomAccessStreamReference类,它提供了静态函数三个:CreateFromFile、CreateFromStream、CreateFromUri,以及一个实现了IRandomAccessStreamReference接口的OpenReadAsync。三个静态函数的意思就是使用不同的方式,将file变成输入输出流,当然,使用之前,你需要打开它,使用范例如下:

 //Uri uri = new Uri("http://www.charlespetzold.com/pw6/PetzoldJersey.jpg");
            Uri uri = new Uri("http://www.google.com.hk");
            RandomAccessStreamReference streamRef = RandomAccessStreamReference.CreateFromUri(uri);

            // Create a buffer for reading the stream
            Windows.Storage.Streams.Buffer buffer = null;

            // Read the entire file
            using (IRandomAccessStreamWithContentType fileStream = await streamRef.OpenReadAsync())
            {
                buffer = new Windows.Storage.Streams.Buffer((uint)fileStream.Size);
                await fileStream.ReadAsync(buffer, (uint)fileStream.Size, InputStreamOptions.None);
            }

 注意以上代码,Open返回的是一个IRandomAccessStreamWithContentType 接口,该接口继承了流输入输出接口和随机访问接口(你就可以把它看成一个.NET中的Stream),以及IContentTypeProvider接口,最后的这个Content有关的接口,其实里面只有一个string类型的属性,叫作ContentType,顾名思义,也就是表示你加载的这个文件流的类型是什么。看我上面的那段代码,你可以断点查看fileStream中的ContentType的字串是什么,当我们使用jpg的Uri时,它的字符串是 "image/pjpeg",若是一个google的首页网址,那么字符串是"text/html",所以,竟然它说是为文件提供流,那么也就是标志这个文件是什么类型的,仅此而已,在开发过程中,我们往往是已经知道返回的文件应该是什么类型的了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值