我正在使用API将文档作为Byte()数组返回。我的第一个问题是Byte()数组的容量是多少?我应该确保整个文档来自API。
假设Byte()数组确实将整个文档保存在内存中,保存到本地文件夹的最有效机制是什么?
我查看了File.WriteAllBytes,但这似乎有2MB的限制。我目前正在使用:
Dim bDocument = obj.DownloadDocument(21, oAuth) 'API call returns byte() of document
Dim sStream As New FileStream("C:\Websites\docName.tif", FileMode.Create, FileAccess.ReadWrite)
sStream.Write(bDocument, 0, bDocument.Length)
但我读过2GB是CLR中任何文件大小的限制。处理和保存潜在的非常大的文件的最佳方法是什么?
答案 0 :(得分:1)
以下是您的问题:
File.WriteAllBytes
。如果您有多个阵列,请使用流并写入每个阵列附带问题:您是否考虑过将文件"直接下载到磁盘"?这意味着您将打开下载流和文件流,并通过缓冲区读取缓冲区并随时写入文件流?这意味着这里对大小的实际限制将是底层文件系统或可用空间,而不是内存。显然,只有当您从中下载的API支持流时,才能实现这一点。