簡體   English   中英

讀取字節數組中的多個文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM