`

WinRT 中RandomAccessStreamReference的使用

 
阅读更多

      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",所以,竟然它说是为文件提供流,那么也就是标志这个文件是什么类型的,仅此而已,在开发过程中,我们往往是已经知道返回的文件应该是什么类型的了。

分享到:
评论

相关推荐

    windows RT开发笔记_WinRT DLL及其调用研究

    在Windows RT开发中,WinRT DLL的出现是为了在Windows应用商店应用(Windows Store Application)中兼容和复用传统的Win32 DLL。Windows RT是Windows Runtime的简称,它是一个跨语言的运行时环境,旨在为Windows 8及...

    WinRT 环境下缺失 Windows API 模拟实现

    WinRT 环境下很多API没有了,比如socket相关的WSASocket,WSAConnect,线程相关的CreateThread等等,导致很多库不能使用,比如boost,基于这些库的应用如果要移植到WinRT环境下,将不得不修改很多代码,甚至需要重新...

    WinRT.揭秘

    本书分为四章,每章都紧密围绕WinRT的主题展开,逐步深入地介绍了如何使用WinRT进行开发: 1. **第一章:介绍WinRT**:这一章节从整体上介绍了WinRT的概念、特点以及其对于开发者的重要性。它解答了许多开发者对于...

    vlc-winrt-master.zip

    VLC for the Windows Store Environment ...总的来说,“vlc-winrt-master.zip”是一个深入学习多媒体播放器开发、WinRT API使用和跨平台开发的宝贵资源。对于想要提升这些技能的IT专业人员,这是一个绝佳的学习机会。

    ComponentOne Studio for WinRT XAML 8.1 2014 V3

    ComponentOne Studio for WinRT XAML 简单易学,功能全面,WinRT XAML 顶级用户界面开发控件套包; ComponentOne Studio for WinRT XAML 新增的界面呈现控件专为数据可视化、布局、输入以及更多用途而设计。源于...

    win8 metro 调用 winRT dll (包括C文件和cpp文件)

    在C++中,你可以定义和使用WinRT类型,创建和调用WinRT组件,而这些都是C语言无法直接完成的。 为了在C文件中调用WinRT DLL,你需要创建一个C++接口或类,该接口或类可以封装WinRT API的调用。这个C++接口或类可以...

    winrt-via-csharp代码

    在WinRT中,可以使用“共享合约”(Share Contract)来实现跨应用的数据传递,例如文本、图片或者链接,这在现代Windows应用中是非常常见的功能。 3. **续行管理器(ContinuationManager.Shared)** 续行管理器...

    WPF 通过 WindowsAppSDK 使用 WinRT 的手写识别功能.rar

    标题“WPF 通过 WindowsAppSDK 使用 WinRT 的手写识别功能.rar”揭示了这个压缩包包含的内容是关于Windows Presentation Foundation(WPF)应用程序如何利用Windows App SDK来接入并使用Windows Runtime(WinRT)的...

    如何从.NET桌面应用程序调用WinRT API

    在搜索框中,输入想要使用的WinRT组件名称(例如,“Windows.Storage”用于文件系统操作)。安装对应的NuGet包,这样会自动为项目添加必要的引用。 **步骤2:使用C# Interop** 在C#项目中,使用`using`语句导入所需...

    使用WinRT OCR API的WPF中的OCR

    要在WPF应用中使用WinRT OCR API,你需要确保项目引用了必要的Windows运行时组件。这通常可以通过在项目中添加引用到`Windows.winmd`或者在`.NET Framework 4.6.1`及以上版本的项目中,使用NuGet包管理器安装`...

    WPF 使用 Win10 的 WinRT 自带 Windows.Media.Ocr 实现图片转文本.rar

    在本文中,我们将深入探讨如何使用Windows Presentation Foundation (WPF) 平台,结合Windows 10的WinRT(Windows Runtime)API,特别是Windows.Media.Ocr模块,来实现图像到文本的转换。这个功能通常被称为光学字符...

    AudioPlaybackConnector winrt手机蓝牙连接电脑播放音乐

    在WinRT中,我们使用Windows.Devices.Bluetooth API来管理蓝牙设备的连接和通信。首先,我们需要扫描和发现附近的蓝牙设备,然后建立连接并进行配对。 4. **AudioPlaybackConnector 的使用**: - **初始化**:创建...

    SwiftWinRT:适用于Swift的WinRT桥接

    迅捷/ WinRT 桥接到WinRT(Windows运行时)到 。例子Windows运行时的基本同步调用: import WinRTdo { RoInitialize () // ...

    ComponentOne Studio for WinRT XAML2012 v3

    ComponentOne Studio for WinRT XAML2012 v3 Powerful WinRT XAML controls for building better Windows Store apps. Powerful UI and Data Visualization Controls for the Windows Store Get UI controls ...

    cpp-CWinRT是WindowsRuntime的标准C语言投影

    在Visual Studio中,你可以使用IntelliSense来探索WinRT API,并且可以利用Visual Studio的调试工具进行深入的调试。 文件`microsoft-cppwinrt-bc037c0`可能是一个包含C++/WinRT示例代码或者库的压缩包。通常,这样...

    windows8 WinRT PointAnimationUsingPath(WPF 路径动画 PathAnimation 的移植)

    总的来说,虽然WinRT没有直接提供与WPF PointAnimationUsingPath相同的API,但通过组合使用CompositeTransform、Storyboard和自定义逻辑,开发者仍然可以实现类似的功能,从而在Windows 8应用中创造出丰富多样的路径...

    WinRT Metro 日期选择控件

    可以实现日期选择功能,有winphone,iphone等多种样式可供选择。...使用时可以在你的项目中引用DatePicker文件夹,具体用法可以参考我在http://blog.csdn.net/f10_s/article/details/10404025上写的。

    c/c++ windows ble 蓝牙操作

    c/c++ windows 通过winrt操作ble 蓝牙 #include #include #include <winrt/Windows.Foundation.h> #include <winrt/Windows.Foundation.Collections.h> #include <winrt/Windows.Devices.Bluetooth.h> #include ...

    5种方法帮微软拯救WinRT.docx

    在未来的发展中,微软应逐步弱化桌面模式,增强Modern UI的功能,使其能够兼容桌面应用。这样,WinRT最终可能演变为一个强化版的“RT”,只有Modern UI界面,同时支持桌面应用,且拥有完整的Windows功能。 其次,...

Global site tag (gtag.js) - Google Analytics