读取字节数组中的多个文件

时间:2012-07-06 07:42:28

标签: c# file bytearray

我有一个对象,它有一个字节数组属性'ZipFile'来存储文件流:

结果类中的属性:

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 [] []数组,还是有更好的方法来执行此操作?请记住,此属性将用于通过调用方法保存(写入)这些文件。对所有建议开放。谢谢。

4 个答案:

答案 0 :(得分:4)

听起来你应该 拥有List<Result>,或者结果应该有List<byte[]>这样的集合作为ZipFiles属性。请注意,目前您根本没有属性 - 您有一个公共字段,这通常是一个坏主意。

(您可能不会公开}作为基础实现。我可能会将其设为List<byte[]>并公开{{ 1}}方法。)

答案 1 :(得分:2)

您可以使用List<byte[]>(字节数组列表),然后在每次迭代中将数组附加到列表中。像。的东西。

public class Result
{
   public List<byte[]> ZipFilesList { get; set; };
}

稍后你可以这样做:

ResultObj.ZipFilesList.Add(ReadFile(FilePath));

答案 2 :(得分:1)

您需要有List<byte[]>

列表
public class Result
{
   public List<byte[]> ZipFiles;
}

将文件添加到列表中

objResult.ZipFiles.Add(ReadFile(FilePath));

答案 3 :(得分:1)

如果您只想存储它们以供以后处理,列表或队列将执行此操作。我想我会选择一个队列,因为你的使用模式似乎与之匹配。

 // make queue
 var filesQueue = new Queue<byte[]>();

 // add file
 filesQueue.Enqueue(newFile);

 // get file
 var fileToSave=filesQueue.Dequeue();

如果您需要并行化等,可以稍后切换到concurrentQue ..