如何创建文件的文件?

问题描述:

class Node 
{ 
    FooType Data; // I can save Data to file with extension .foo 
    void Save() 
    { 
     // save Data to .foo file 
    } 
} 

现在,如何创建文件的文件?

class Graph 
{ 
    List<Node> Nodes; 
    void Save() 
    { 
     foreach(Node node in Nodes) 
     { 
      node.Save(); 
     } 
    } 
} 

现在,当我调用someGraph.Save();然后它创建Nodes.Count文件的数量。

我想将这些文件显示为一个扩展名为somename.graph的文件,并且能够以Nodes再次将其读取。

我该怎么做?有没有办法将文件捆绑到一个单独的文件?

使用类似zip的存档格式。

如果没有外部库支持,您可以使用.Net的序列化机制将Dictionary<string, byte[]>(每个文件的文件名和数据)存储在一个文件中。开始here

+0

不错。但是我不允许使用外部库。 +1这是我在想什么,但有没有其他方式? – 2010-04-23 09:36:45

+0

关于它的“外部”是什么?它构建在.Net框架中。 – 2010-04-23 13:49:46

+0

@Chris,这可能是我的错。我提供的链接指向第三方zip库。我不知道.Net有内置的zip文件支持。 – 2010-04-23 14:59:05

或者Graph.Save应该将它正在使用的文件流传递给每个node.Save调用,因此Node.Save使用与其封闭Graph相同的文件流。

+0

我无法控制'Data.Save();'。它会在磁盘上创建'somthing.foo'。我想将这些'.foo'结合到一个文件中。 – 2010-04-23 09:39:55

你不能使用System.IO.Compression命名空间中的类吗?具体来说,GZipStream?这不会构成第三方库,因为它是建立在.Net中的,并且可以从2.0版开始使用。