2013-01-16 42 views
0

我在写一个JavaScript的Windows应用商店应用程序。我的要求是读取本地可用的文件,并获取arraybuffer或Uint8array作为响应。转换IBuffer缓冲区阵列

我尝试使用“Windows.Storage.FileIO.readBufferAsync(文件)”,但这是给我一个IBuffer对象。

  1. 是否有API读取文件,并给我阵列缓冲区?
  2. 我如何将“IBuffer”转换为“arraybuffer”?

由于提前

回答

2

可以使用DataReader,例如:

Windows.Storage.StorageFile.getFileFromApplicationUriAsync(new Windows.Foundation.Uri("ms-appx:///Assets/textfile.txt")).then(
     function (myFile) { 
      Windows.Storage.FileIO.readBufferAsync(myFile).done(
       function (buffer) { 
        var myArray = new Uint8Array(buffer.length); 

        var dataReader = Windows.Storage.Streams.DataReader.fromBuffer(buffer); 
        dataReader.readBytes(myArray) 
        dataReader.close(); 
       } 
      ); 
     } 
    ); 
+0

由于吉姆。您的解决方案解决了我的问题 – user1613338

+0

不用客气...请问您是否将问题标记为已接受。点击常见问题解答中的[如何在此提问?](http://stackoverflow.com/faq#link-howtoask)下的“查看更多”链接。 –

0

本文看来这个API混乱的一个很好的总结:

http://kraigbrockschmidt.com/blog/?p=554

我意思是“混淆”,即不清楚类/方法(即DataWriter/D ataReader)访问IBuffer/Buffer对象的内容,因为它需要的接口不提供这样做的方法......?

我假设那些处理IBuffer接口的类(例如DataReader/DataWriter)在创建实例(仅返回对象IBuffer接口访问)时知道实现它的真实类。

0

Windows.Security.Cryptography.CryptographicBuffer.copyToByteArray(IBuffer)

此返回Uint8Array(字节阵列)

相关问题