3

ファイルストリームを格納するためのバイト配列プロパティ「ZipFile」を持つオブジェクトがあります。

Resultクラスのプロパティ:

public class Result
{
  public byte[] ZipFile;
}

私のアプリケーションでは、PDFファイルを生成し、次のようなReadFileメソッドを使用してファイルを「ZipFile」プロパティに読み込みます。

objResult.ZipFile = ReadFile(FilePath);

ReadFileメソッドの署名:

private byte[] ReadFile(string strFileName)

問題:

複数のPDFファイルを生成しているため、ReadFileメソッドがループで呼び出されます。ReadFileメソッドは、指定されたパラメーターから「objResult.ZipFile」プロパティに新しいファイルを読み取るたびに、「ZipFile」プロパティの古い値を置き換えます。ここで、「ZipFile」プロパティに複数のPDFファイルストリームを保存する必要があります。だから私はそれのために何をすべきですか?このプロパティを2次元のbyte[][]配列に変更する必要がありますか、それともこれを行うためのより良い方法はありますか?このプロパティは、メソッドを呼び出してこれらのファイルを保存(書き込み)するために使用されることに注意してください。すべての提案を受け入れます。ありがとう。

4

4 に答える 4

4

が必要である、結果にプロパティList<Result>などのコレクションが含まれている必要があるようです。現在、プロパティはまったくありません。パブリックフィールドがありますが、これは一般的に悪い考えです。List<byte[]>ZipFiles

(おそらく、それを-として公開List<byte[]>しないでしょう-それが基礎となる実装になります。私はおそらくそれを作成してメソッドIEnumerable<byte[]>を公開しAddZipFileます。)

于 2012-07-06T07:43:56.193 に答える
2

List<byte[]>(バイト配列のリスト)を使用して、各反復でリストに配列を追加できます。何かのようなもの。

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

後で行うことができます:

ResultObj.ZipFilesList.Add(ReadFile(FilePath));
于 2012-07-06T07:44:23.120 に答える
1

あなたはのリストを持っている必要がありますList<byte[]>

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

そして、ファイルをリストに追加します

objResult.ZipFiles.Add(ReadFile(FilePath));
于 2012-07-06T07:45:37.317 に答える
1

後でリストまたはキューを処理するためにそれらを保存したいだけの場合は、それを行います。あなたの使用パターンがそれに一致しているように見えるので、私はキューを選ぶと思います。

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

 // add file
 filesQueue.Enqueue(newFile);

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

並列化などが必要になった場合は、後でconcurrentQueueに切り替えることができます。

于 2012-07-06T07:49:26.540 に答える