2010-04-23 6 views
0
class Node 
{ 
    FooType Data; // I can save Data to file with extension .foo 
    void Save() 
    { 
     // save Data to .foo file 
    } 
} 

Maintenant,Comment créer un fichier de fichiers?

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

Maintenant, quand j'invoquez someGraph.Save(); alors il crée Nodes.Count nombre de fichiers.

Je voudrais apparaître ces fichiers en tant que un fichier avec l'extension somename.graph et être en mesure de le lire à nouveau comme Nodes.

Comment est-ce que je peux faire ceci? Existe-t-il un moyen de regrouper des fichiers dans un seul fichier différent?

Répondre

1

Utilisez un format d'archive tel que zip. Sans support de bibliothèque externe, vous pouvez simplement utiliser le mécanisme de sérialisation de .Net pour stocker un Dictionary<string, byte[]> (nom de fichier et données pour chaque fichier) dans un seul fichier. Commencez here.

+0

Nice. Mais je ne suis pas autorisé à utiliser des bibliothèques externes. +1 C'est ce à quoi je pense mais existe-t-il un autre moyen? –

+0

Qu'est-ce que c'est «externe» à ce sujet? C'est construit dans le framework .Net. –

+0

@Chris, c'est probablement de ma faute. Le lien que j'ai fourni pointe vers une bibliothèque zip tierce. Je ne savais pas que .Net a le support de fichier zip intégré. –

0

Ou Graph.Save doit transmettre le flux de fichier utilisé à chacun des nœuds. Enregistrez les appels, afin que Node.Save utilise le même flux de fichier que son graphique englobant.

+0

Je n'ai aucun contrôle sur 'Data.Save();'. Il va créer 'somthing.foo' sur le disque. Je veux combiner ces '.foo's à un seul fichier. –

0

Ne pouvez-vous pas utiliser les classes dans l'espace de noms System.IO.Compression? Plus précisément, GZipStream? Cela ne constituerait pas une bibliothèque tierce, car elle est intégrée à .Net et est disponible à partir de la version 2.0.

Questions connexes