我正在编写一个JavaScript Windows应用商店应用。我的要求是读取一个本地可用的文件,并获取arraybuffer或Uint8array作为响应。
我尝试使用“Windows.Storage.FileIO.readBufferAsync(file)”,但这给了我一个IBuffer对象。
先谢谢
答案 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(字节数组)