将IBuffer转换为Buffer数组

时间:2013-01-16 06:46:48

标签: windows-8

我正在编写一个JavaScript Windows应用商店应用。我的要求是读取一个本地可用的文件,并获取arraybuffer或Uint8array作为响应。

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

  1. 是否有一个API可以读取文件并给我一个arraybuffer?
  2. 如何将“IBuffer”转换为“arraybuffer”?
  3. 先谢谢

3 个答案:

答案 0 :(得分: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();
                }
            );
        }
    );

答案 1 :(得分:0)

本文似乎是对此API混淆的一个很好的总结:

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

我的意思是“混乱”,一个类/方法(即DataWriter / DataReader)如何访问IBuffer / Buffer对象内容并不明显,因为它需要的接口不提供这样做的方法......?

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

答案 2 :(得分:0)

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

这将返回Uint8Array(字节数组)