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