答案 0 :(得分:5)
如果您需要访问大量文件,请用户选择父文件夹然后存储它可能是一个更好的解决方案(除非您想要存储来自不同位置的1,000个单独挑选的文件)。您也可以将StorageFolder
存储在访问列表中。
我不确定为什么你认为它会让你的应用变慢,但唯一可以知道这是否会影响你的表现的方法就是尝试并衡量你的目标。
答案 1 :(得分:2)
考虑这种方法..
g
这堂课..
public async static Task<byte[]> ToByteArray(this StorageFile file)
{
byte[] fileBytes = null;
using (IRandomAccessStreamWithContentType stream = await file.OpenReadAsync())
{
fileBytes = new byte[stream.Size];
using (DataReader reader = new DataReader(stream))
{
await reader.LoadAsync((uint)stream.Size);
reader.ReadBytes(fileBytes);
}
}
return fileBytes;
}
这个变量
public class AppFile
{
public string FileName { get; set; }
public byte[] ByteArray { get; set; }
}
只需..
List<AppFile> _appFiles = new List<AppFile>();
<强>更新强>
var fileOpenPicker = new FileOpenPicker();
IReadOnlyList<StorageFile> files = await fileOpenPicker.PickMultipleFilesAsync();
foreach (var file in files)
{
var byteArray = await file.ToByteArray();
_appFiles.Add(new AppFile { FileName = file.DisplayName, ByteArray = byteArray });
}
答案 2 :(得分:1)
有点晚了,但是,是的,未来的访问列表会减慢你的应用程序,因为它会返回storagfile,storagefolder或storeageitem对象。它们通过运行时代理运行,无论主机功能如何,它都会在大约400个对象上遇到巨大的性能障碍