10
votes

Enregistrer des données dans un fichier en c #

Je travaille donc actuellement sur un projet pour créer une feuille de caractères automatisée pour le jeu de rôle Pathfinder et je suis à perte de savoir comment enregistrer les données. Je souhaite enregistrer la valeur actuelle de toutes mes variables à un fichier avec l'extension .pfcsheet et l'ouvrir plus tard. J'ai googlé et je ne trouve pas quelque chose qui dit comment faire cela, juste comment enregistrer le contenu d'une zone de texte. J'ai essayé d'utiliser la commande SaveFileDialog, mais cela continue à me donner un "nom de fichier n'est pas valide" erreur et personne ne semble savoir pourquoi.


5 commentaires

Vous pouvez sérialiser les objets sur une chaîne XML, puis écrivez la chaîne dans un fichier avec un nom et une extension de votre choix.


@XBONEZ J'ai l'impression que, s'ils ont des difficultés à l'aide de la boîte de dialogue Enregistrer le fichier, la sérialisation est hors de question. Les tutoriels sont probablement en ordre.


@MichaeltDDD: Ajout de plus de détails comme réponse. La sérialisation peut être un peu délicate à clouer.


Merci pour les gars de l'aide, je vais examiner la sérialisation.


Pour une référence future, lorsque vous commencez à travailler sur des projets réels, veuillez toujours préciser si le format du fichier est corrigé par un document de contrôle d'interface. S'il vous plaît donner une pensée à la compatibilité vers l'avant et l'arrière du format. Et, par tous les moyens, essayez de faire vos propres recherches avant de recourir à des forums en ligne ...


7 Réponses :


15
votes

Je pense que vous voudrez peut-être quelque chose comme celui-ci

// Compose a string that consists of three lines.
string lines = "First line.\r\nSecond line.\r\nThird line.";

// Write the string to a file.
System.IO.StreamWriter file = new System.IO.StreamWriter("c:\\test.txt");
file.WriteLine(lines);

file.Close();


0 commentaires

0
votes

Démarrage de l'espace de noms System.IO (en particulier les objets de fichier ou de fichierInfo) devrait vous faire démarrer.

http://msdn.microsoft.com/fr- US / Bibliothèque / System.IO.file.aspx

http://msdn.microsoft.com/fr- US / Bibliothèque / System.IO.fileinfo.aspx


0 commentaires

2
votes

Voici un article de MSDN sur un guide pour savoir comment écrire de texte dans un fichier:

http://msdn.microsoft.com/en-us/library/ 8bh11f1k.aspx

Je commencerais là, puis poster des questions supplémentaires, plus spécifiques que vous poursuivez votre développement.


0 commentaires

3
votes

regarder dans le xmlSerializer code > classe.

Si vous souhaitez enregistrer l'état des objets et être capable de les recréer facilement à un autre moment, la sérialisation est votre meilleure mise. p>

sérialiser cela afin que vous puissiez renvoyer le XML entièrement formé. Ecrivez ceci dans un fichier à l'aide de la classe Streamwriter CODE> Classe. P>

Plus tard, vous pouvez lire dans le contenu de votre fichier et transmettez-la à la classe Serializer avec une instance de l'objet Vous voulez peupler et le sérialiseur s'occupera également de désérialiser aussi. P>

Voici un extrait de code pris de Soutenir Microsoft : P>

using System;

public class clsPerson
{
  public  string FirstName;
  public  string MI;
  public  string LastName;
}

class class1
{ 
   static void Main(string[] args)
   {
      clsPerson p=new clsPerson();
      p.FirstName = "Jeff";
      p.MI = "A";
      p.LastName = "Price";
      System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());

      // at this step, instead of passing Console.Out, you can pass in a 
      // Streamwriter to write the contents to a file of your choosing.
      x.Serialize(Console.Out, p);


      Console.WriteLine();
      Console.ReadLine();
   }
} 


1 commentaires

Cette. En plus de la sérialisation vous permettant d'émettre l'état actuel d'un objet en tant que données persistables, la sérialisation XML crache un fichier qui pourrait être appelé «consommable humain», ce qui serait facile à analyser comme entrée dans un autre programme.



3
votes

Voici un exemple simple semblable à Sachin's. Il est recommandé d'utiliser une instruction "Utilisation" sur la ressource de fichier non géré: xxx

à l'aide de la déclaration (référence C #)


0 commentaires

27
votes

Je viens d'écrire a Publier Blog sur la sauvegarde des données d'un objet à Binary, XML ou JSON . On dirait que vous souhaitez probablement utiliser la sérialisation binaire, mais peut-être que vous souhaitez que les fichiers soient édités en dehors de votre application, auquel cas XML ou JSON pourraient être meilleurs. Voici les fonctions pour le faire dans les différents formats. Voir mon article de blog pour plus de détails.

binaire h2> xxx pré>

xml h2>

nécessite l'ensemble System.xml à inclure dans votre projet. P>

// To save the characterSheet variable contents to a file.
WriteToBinaryFile<CharacterSheet>("C:\CharacterSheet.pfcsheet", characterSheet);

// To load the file contents back into a variable.
CharacterSheet characterSheet = ReadFromBinaryFile<CharacterSheet>("C:\CharacterSheet.pfcsheet");


5 commentaires

Vous êtes un peu en retard, n'est-ce pas? La question que vous répondez a été posée en 2012.


@RoberTharevey Bien sûr, pour l'OP, mais d'autres personnes (telles que moi) trouvent toujours cet article via des moteurs de recherche tout le temps, il est donc toujours agréable d'avoir plus de réponses et d'exemples à apprendre.


@deadlydog merci pour les exemples de code super. Je me demande pourquoi vous avez dérangé, y compris le BOOL ANNEZ dans les fonctions d'écriture s'il n'y a aucun moyen de lire plusieurs instances sérialisées dans les fonctions de lecture. En d'autres termes, ne sera-t-il pas ajouter être toujours faux puisque vous ne pouvez pas lire plusieurs écrivies dans le même fichier?


@ ZX9 Oui, vous êtes correct, vous n'avez probablement pas besoin du Ajoutez BOOL si vous envisagez simplement de l'utiliser pour lire la sérialisation plus tard. Je viens de l'inclure au cas où les utilisateurs par hasard souhaitent simplement jeter un tas d'instances différentes à un fichier XML à la lecture de l'humanité à travers le fichier ultérieurement.


Excellent, m'a facilement sauvé quelques heures - merci.



1
votes

Un doublure: xxx

Cela crée le fichier si cela n'existe pas et écrase s'il existe. Assurez-vous d'avoir des privilèges appropriés à écrire à l'emplacement, sinon vous obtiendrez une exception.

https://msdn.microsoft.com/en-us/library/ms143375%28v=VS.110%29.aspx ? f = 255 & msppperror = -2147217396

Écrivez la chaîne dans le fichier texte et assurez-vous qu'il écrase toujours le contenu existant.


0 commentaires