Par exemple, j'ai un fichier TXT qui lit:
{12, 345, 45} {2342, 234, 45, 2, 2, 45345} {234, 546, 34, 3, 45, 65, 765} {12, 23, 434, 34, 56, 76, 5}
9 Réponses :
Vous devrez utiliser le Vous pouvez créer un puis envelopper le puis, lisez dans chaque ligne et faites votre traitement de chaîne (ajout de virgules et de supports): p> Enfin, enveloppez le N'oubliez pas de fermer vos flux après avoir travaillé avec eux. P> filtream Code>
classe Pour ouvrir le fichier, la classe StreamReader CODE> à lire dans le fichier, ainsi que la classe
StreamWriter code> pour écrire dans le fichier.
filestream code> comme ceci: p>
filtream code> dans un
StreamReder code>: p>
filtream code> dans un
Streamwriter code> et écrivez vos chaînes modifiées dans le fichier: p>
reader.Close();
writer.Close();
file.Close();
J'ai une question. Lorsque j'ouvre le même fichier, je dois écrire toutes les données en arrière? pas seulement les données modifiées
Lire chaque ligne. P>
Ajouter un support avant la chaîne et après P>
Puis remplacer l'espace "" par "" (virgule et espace) p>
Vous devez d'abord travailler sur la logique au lieu de demander directement aux gens de lui fournir cela. En ce qui concerne la lecture / l'écriture d'un fichier, vous allez ici:
//write FileStream fs = new FileStream("file_name", FileMode.Create); StreamWriter w = new StreamWriter(fs, Encoding.UTF8); w.WriteLine("text_to_write"); w.Flush(); w.Close(); fs.Close(); //read fs = new FileStream("file_name", FileMode.Open); StreamReader r = new StreamReader(fs, Encoding.UTF8); Console.WriteLine(r.ReadLine()); r.Close(); fs.Close();
Vous devez utiliser à l'aide de déclarations pour vous assurer que les objets (filtreams, streamerriers et branches sont correctement éliminés.
ou, comme le dit Waqasahmed, faites-le juste un à une ligne. p>
quelque chose comme ceci: (non testé)
Modifier pour ajouter comment modifier la fline. (non testé, mais je suis à peu près sûr que cela fonctionnera simplement)
StreamReader sr = new StreamReader("path/to/file.txt"); StreamWriter sw = new StreamWriter("path/to/outfile.txt"); string sLine = sr.ReadLine(); for (; sLine != null; sLine = sr.ReadLine() ) { sLine = "{" + sLine.Replace(" ", ", ") + "}"; sw.WriteLine(sLine); }
À la fin, j'ai utilisé un deuxième fichier plutôt que d'éditer le premier:
TextReader reader = new StreamReader("triangle.txt"); TextWriter writer = new StreamWriter("triangle2.txt"); for (; ; ) { string s = reader.ReadLine(); if (s == null) break; s = s.Replace(" ", ", "); s = "{" + s + "},"; writer.WriteLine(s); }
Au lieu d'une boucle infinie avec une pause, vous devez utiliser une boucle tandis que comme suit: tandis que (Reader.Eek ()> -1)
J'éviterais infini pour (;;) des boucles; Semble comme un mauvais style. Vous pouvez simplifier cela comme "alors que ((S = Reader.ReadlineLine ())! = Null) {....}
string [] lines = File.ReadAllLines("input.txt"); var processed = lines.Select(line => string.Format("{{{0}}}", line.Replace(" ", ", "))); File.WriteAllLines("output.txt",processed.ToArray());
Ajout de Linq pour le plaisir et le profit (salle d'optimisation;)):
System.IO.File.WriteAllLines( "outfilename.txt", System.IO.File.ReadAllLines("infilename.txt").Select(line => "{" + string.Join(", ", line.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries) ) + "}" ).ToArray() );
Tout dans une seule déclaration! Imbattable :-D