[英]Reading Multiple files in a Byte Array
我有一个对象,它有一个字节数组属性'ZipFile'来存储文件流:
Result类中的属性:
public class Result
{
public byte[] ZipFile;
}
在我的应用程序中,我生成一个PDF文件,并使用我的ReadFile方法将文件读入'ZipFile'属性,如下所示:
objResult.ZipFile = ReadFile(FilePath);
ReadFile方法的签名:
private byte[] ReadFile(string strFileName)
问题:
我的ReadFile方法现在将在循环中调用,因为我正在生成多个PDF文件。 每次ReadFile方法都会将指定参数中的新文件读取到'objResult.ZipFile'属性,从而替换'ZipFile'属性中的旧值。 现在,我希望我的'ZipFile'属性存储多个PDF文件流。 那我该怎么做呢? 我应该将此属性更改为二维byte [] []数组,还是有更好的方法来执行此操作? 请记住,此属性将用于通过调用方法保存(写入)这些文件。 对所有建议开放。 谢谢。
听起来像您应该有一个List<Result>
或结果应具有收集诸如List<byte[]>
作为ZipFiles
属性。 请注意,目前您根本没有属性 - 您有一个公共字段,这通常是一个坏主意。
(您可能不会将其公开为List<byte[]>
- 这将是底层实现。我可能会将其设置为IEnumerable<byte[]>
并公开AddZipFile
方法。)
您可以使用List<byte[]>
(字节数组列表),然后在每次迭代中将数组附加到列表中。 就像是。
public class Result
{
public List<byte[]> ZipFilesList { get; set; };
}
以后你可以这样做:
ResultObj.ZipFilesList.Add(ReadFile(FilePath));
您需要列出List<byte[]>
public class Result
{
public List<byte[]> ZipFiles;
}
并将文件添加到列表中
objResult.ZipFiles.Add(ReadFile(FilePath));
如果您只想存储它们以供以后处理,则列表或队列将执行此操作。 我想我会选择一个队列,因为你的使用模式似乎与之匹配。
// make queue
var filesQueue = new Queue<byte[]>();
// add file
filesQueue.Enqueue(newFile);
// get file
var fileToSave=filesQueue.Dequeue();
如果您需要并行化等,可以稍后切换到concurrentQueue。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.