2009-11-11 8 views
1

je besoin de créer une application qui va lire un fichier, ce sera comme ceci:Travailler avec des fichiers

Font = "Courier New" 
Size = "10" 
Style = "Bold" 

Comme vous pouvez le voir, je vais l'utiliser pour définir certaines propriétés d'un TextBox, mais je vais stocker chaque chose qui est à l'intérieur de ces citations et les stocker sur certaines variables (textFont, textSize, textStyle).

Je pense que je peux utiliser cette syntaxe pour ouvrir un flux avec le fichier:

StreamReader reader = new StreamReader("confs.txt"); 

Les questions sont les suivantes:

  • Comme le StreamReader est déclaré qu'il lit le fichier dans l'application répertoire (juste pour confirmer)
  • Comment puis-je lire seulement ce qui est dans les guillemets et les stocker dans une chaîne?

Comme je pense, les E/S de fichiers sont iqual dans Windows Mobile et Windows. Cordialement

Répondre

3

Que diriez-vous quelque chose comme ceci:

foreach(string s in FileLines) { 
    string[] data = s.Split(new[] { '=' }); 
    // property is in data[0] 
    // value is in data[1] 
} 

Ce que vous avez créé est un simple fichier CSV

Où par CSV Je veux dire valeurs séparées par des caractères ...

Mise à jour

Ok, semble que vous essayez de copier exactement au lieu de comprendre l'algorithme, donc je vais créer un nouveau ici

StreamReader reader = new StreamReader("confs.txt"); 
while(reader.peek >= 0) { 
    string l = reader.ReadLine(); 
    string[] data = l.Split(new[] { '=' }); 
    // property is in data[0] 
    // value is in data[1] 
} 
reader.Close(); 
reader.Dispose(); 
+2

Je pense que cela étire la définition de l'appeler un fichier CSV. – pavium

+0

Je comprends, mais je ne l'appellerais pas un fichier de configuration car il n'y a pas de sections pour chacune des clés – Wayne

+0

Filelines était un exemple de tableau de chaînes. C'était un exemple sur la façon de diviser la chaîne. Je suis sûr que vous savez comment lire un fichier ligne par ligne ou slurp dans un tableau oui? – Wayne

2

Il est préférable de déclarer le chemin complet, ou utilisez la syntaxe suivante:

System.IO.Path.Combine((new System.Uri(Assembly.GetEntryAssembly().CodeBase)).AbsolutePath, "confs.txt"); 

Je pense que pour l'analyser, vous auriez un temps plus facile d'enregistrer le fichier au format XML et de le charger dans un XmlDocument . Ou mieux encore, abandonnez cette idée et stockez les informations sur les tables dans le fichier app.config. C'est tellement plus facile et vous pouvez toujours l'éditer dans le bloc-notes sans recompiler si nécessaire.

(ce qui rendrait la première moitié de la réponse comme sans objet)

2

1: aussi longtemps que vous ne modifiez pas le répertoire courant, oui. Il ya plus complète façons d'obtenir le répertoire de l'application, bien que

2: aucun nombre de façons d'analyser une telle chaîne; string.Split, Regex, etc; purement à titre d'illustration, je vais (ab) utilise DbConnectionStringBuilder:

using (StreamReader reader = File.OpenText("data.txt")) { 
    string line; 
    DbConnectionStringBuilder db = new DbConnectionStringBuilder(); 
    while ((line = reader.ReadLine()) != null) { 
     db.ConnectionString = line; 
     foreach (string key in db.Keys) { 
      Console.WriteLine(key); 
      Console.WriteLine(db[key]); 
     } 
    } 
} 

modifierDbConnectionStringBuilder ne peut pas exister dans windows-mobile; peut-être juste Split sur = ou utiliser Regex; il descend au format exact.

+0

Comme Maxwell Smart dirait - Croiriez-vous, battu par tant! – Wayne

+0

@Wayne: Hein? –

+0

Votre message était le même que le mien, mais votre solution semblait plus élégante que ma façon "à l'ancienne"! – Wayne