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