关于大文件读取的一些问题

E****e UID.1053545
2016-01-16 发表

[mw_shl_code=csharp,true]
FileOpenPicker fileOpenPicker = new FileOpenPicker();
fileOpenPicker.SuggestedStartLocation = PickerLocationId.Downloads;

fileOpenPicker.ViewMode = PickerViewMode.List;

fileOpenPicker.FileTypeFilter.Add(".exe");
fileOpenPicker.FileTypeFilter.Add(".zip");
fileOpenPicker.FileTypeFilter.Add(".jpg");
fileOpenPicker.FileTypeFilter.Add(".iso");
fileOpenPicker.FileTypeFilter.Add(".mp3");
fileOpenPicker.FileTypeFilter.Add(".wav");
fileOpenPicker.FileTypeFilter.Add(".mp4");
fileOpenPicker.FileTypeFilter.Add(".txt");
...
StorageFile file = await fileOpenPicker.PickSingleFileAsync();
if (file == null)
return;
var buffer = await FileIO.ReadBufferAsync(file);
[/mw_shl_code]
读取文件不能超过1G,超过了就报异常(System.OutOfMemoryException),请问这种时候要怎么样才能读取超过1G的文件呢?

补充内容 (2016-3-22 17:23):
楼主已经解决了这个问题了
具体什么什么时候解决的,大概是几个月前吧
下面是成品 :
FIleHashCheck:
https://www.microsoft.com/zh-cn/store/apps/filehashcheck/9nblggh5ff52

敬告:
为防止不可控的内容风险,本站已关闭新用户注册,新贴的发表及评论;
你现在看到的内容只是互联网用户曾经发表的言论快照,仅用于老用户留存纪念,且仅与科技行业相关,全部内容不代表本站观点及立场;
本站重新开放前已针对包括用户隐私、版权保护、信息安全、国家政策在内的各种互联网法律法规要求,执行了隐患内容的自查、屏蔽和删除;
本站目前所属个人主体,未有任何盈利安排与计划,且与原WFUN.COM所属公司不存在任何关联关系;
如果本帖内容或者相关资源侵犯到您的合法权益,或者您认为存在问题,那么请您务必点此举报或投诉!
全部回复:
wcavell UID.34926
2016-01-16 回复

分段读取呗,你这样就是一次性把文件放到内存里。直接占用了1G的RAM了。

E****e UID.1053545
2016-01-16 回复

Quote***链接停止解析***
分段读取呗,你这样就是一次性把文件放到内存里。直接占用了1G的RAM了。


怎么做才能分段读取啊?第一次用FileIO接收数据感觉跟Stream很不同呢.

tmp00000 UID.995403
2016-01-17 回复

你用到哪就读哪一段,别全放内存里

E****e UID.1053545
2016-03-22 回复

好吧 很久没上来了 图吧混久了 年终都在研究二手主机{:3_129:} 二手主板666 二手cpu66666 简直好用极了
app也早就做好了 丢商店去了 修bug修了几次 正常稳定了也久没怎么管咯 {:3_96:} 并没有用上啥创建文件的方法啊{:3_97:}
大家有兴趣就去下载来用用吧——没广告也不用钱啊
FIleHashCheck:
https://www.microsoft.com/zh-cn/store/apps/filehashcheck/9nblggh5ff52

tan****net UID.570517
2016-03-22 回复

Quote***链接停止解析***
怎么做才能分段读取啊?第一次用FileIO接收数据感觉跟Stream很不同呢.


using System.IO;

var stream = (await file.OpenReadAsync()).AsStream();

直接把文件作为输入流,申请一块缓冲区,重复了利用

E****e UID.1053545
2016-03-22 回复

Quote***链接停止解析***
using System.IO;

var stream = (await file.OpenReadAsync()).AsStream();


恩 虽然已经解决了 但还是谢谢啊

本站使用Golang构建,点击此处申请开源鄂ICP备18029942号-4联系站长投诉/举报