1

我有这个代码在编写二进制文件时可以工作:

using (BinaryWriter binWriter =
                                new BinaryWriter(File.Open(f.fileName, FileMode.Create)))
                            {
                                for (int i = 0; i < f.histogramValueList.Count; i++)
                                {

                                    binWriter.Write(f.histogramValueList[(int)i]);



                                }
                                binWriter.Close();
                            }

这段代码从硬盘上的 DAT 文件读回:

fileName = Options_DB.get_histogramFileDirectory();
            if (File.Exists(fileName))
            {
                BinaryReader binReader =
                    new BinaryReader(File.Open(fileName, FileMode.Open));
                try
                {
                    //byte[] testArray = new byte[3];
                    int pos = 0;
                    int length = (int)binReader.BaseStream.Length;

                    binReader.BaseStream.Seek(0, SeekOrigin.Begin);

                    while (pos < length)
                    {
                        long[] l = new long[256];

                        for (int i = 0; i < 256; i++)
                        {
                            if (pos < length)
                                l[i] = binReader.ReadInt64();
                            else
                                break;

                            pos += sizeof(Int64);
                        }
                        list_of_histograms.Add(l);
                    }
                }

                catch
                {
                }
                finally
                {
                    binReader.Close();
                }

但我想要做的是添加到编写代码以将更多三个流写入文件,如下所示:

binWriter.Write(f.histogramValueList[(int)i]);
binWriter.Write(f.histogramValueListR[(int)i]);
binWriter.Write(f.histogramValueListG[(int)i]);
binWriter.Write(f.histogramValueListB[(int)i]);

但第一件事是我如何编写所有这些并将其放入文件中,以便通过字符串或其他东西来识别它,所以当我读回文件时,我将能够将每个列表放入一个新列表中?

第二件事是我现在如何读回文件以便将每个列表添加到新列表中?现在,我很容易编写一个列表读取并将其添加到列表中。但是现在我添加了更多三个列表,那么我该怎么做呢?

谢谢。

4

1 回答 1

2

要获得答案,请考虑如何获取您刚刚序列化的列表中的项目数。

作弊码:在项目之前写集合中的项目数。阅读时做反向。

writer.Write(items.Count());
// write items.Count() items.

阅读:

int count = reader.ReadInt32();
items = new List<ItemType>();
// read count item objects and add to items collection.
于 2012-12-13T04:56:55.777 回答