2013-01-16 45 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(字節陣列)

相關問題