tes*_*ing 7 c# windows-phone win-universal-app windows-10-mobile
我想将本地存储的文件读入字节数组.我怎么做?这是我的尝试:
StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(filePath);
var file = await folder.GetFileAsync(filePath);
var buffer = await FileIO.ReadBufferAsync(file);
DataReader dataReader = Windows.Storage.Streams.DataReader.FromBuffer(buffer);
// doesn't work because ReadBytes wants a byte[] as parameter and also isn't asynchronous
byte[] result = dataReader.ReadBytes(buffer.Length);
Run Code Online (Sandbox Code Playgroud)
Dan*_*erg 10
我认为其他答案会使事情变得不必要地复杂化.IBuffer.ToArray()为此目的有一种方便的扩展方法.
只需这样做:
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Storage;
...
IStorageFile file;
IBuffer buffer = await FileIO.ReadBufferAsync(file);
byte[] bytes = buffer.ToArray();
Run Code Online (Sandbox Code Playgroud)
小智 8
StorageFolder storageFolder = ApplicationData.Current.LocalFolder;
StorageFile sampleFile = await storageFolder.GetFileAsync(FILE_NAME);
byte[] result;
using (Stream stream = await sampleFile.OpenStreamForReadAsync())
{
using (var memoryStream = new MemoryStream())
{
stream.CopyTo(memoryStream);
result = memoryStream.ToArray();
}
}
Run Code Online (Sandbox Code Playgroud)