9
votes

Comment puis-je lire et éditer un fichier .txt en C #?

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}


0 commentaires

9 Réponses :


3
votes

Vous devrez utiliser le 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.

Vous pouvez créer un filestream code> comme ceci: p> xxx pré>

puis envelopper le filtream code> dans un StreamReder code>: p> xxx pré>

puis, lisez dans chaque ligne et faites votre traitement de chaîne (ajout de virgules et de supports): p> xxx pré>

Enfin, enveloppez le filtream code> dans un Streamwriter code> et écrivez vos chaînes modifiées dans le fichier: p> xxx pré>

N'oubliez pas de fermer vos flux après avoir travaillé avec eux. P>

reader.Close();
writer.Close();
file.Close();


1 commentaires

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



3
votes

Lire chaque ligne.

Ajouter un support avant la chaîne et après

Puis remplacer l'espace "" par "" (virgule et espace)


0 commentaires

4
votes

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();


1 commentaires

Vous devez utiliser à l'aide de déclarations pour vous assurer que les objets (filtreams, streamerriers et branches sont correctement éliminés.



1
votes
  1. chargez le fichier entier
  2. Utilisez string.split ('\ n') pour diviser le contenu en lignes
  3. Utilisez string.replace ('', ',') pour insérer des virgules.
  4. enregistrer le fichier.

    ou, comme le dit Waqasahmed, faites-le juste un à une ligne.

    Voir aussi: http://www.cshaarphelp.com/archives/archive24.html < / a>

    En outre, cela semble suspicieusement comme un problème de devoirs. Peut-être devrions-nous avoir une balise "devoirs"?


0 commentaires

13
votes

quelque chose comme ceci: (non testé) xxx


0 commentaires

3
votes

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);
    }


0 commentaires

1
votes

À 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);
}


2 commentaires

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) {....}



3
votes
string [] lines = File.ReadAllLines("input.txt");
var processed = lines.Select(line => string.Format("{{{0}}}", line.Replace(" ", ", ")));
File.WriteAllLines("output.txt",processed.ToArray());

0 commentaires

20
votes

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()
);


1 commentaires

Tout dans une seule déclaration! Imbattable :-D