In Datei ersetzen



  • Hi Leute,

    Ich muss in einem Verzeichnis in allen Dateien einen bestimmten String durch einen anderen ersetzen. In diesem Verzeichnis müssen nicht nur Text-Dateien liegen, allerdings ist die Wahrscheinlichkeit extrem hoch, dass es eine Text-Datei ist, wenn der entsprechende String darin enthalten ist.
    Wie würdet ihr vorgehen?
    Mein Ansatz bisher:

    DirectoryInfo inputDirInfo = new DirectoryInfo(inputDir);
                    FileInfo[] files = inputDirInfo.GetFiles("*.*", SearchOption.AllDirectories);
                    foreach(FileInfo file in files)
                    {
                        FileStream fileStream = file.OpenRead();
                        byte[] buffer = new byte[fileStream.Length];
                        fileStream.Read(buffer, 0, (int)fileStream.Length);
                        fileStreamRead.Close();
                        string content = ""; //buffer;
                        content = content.Replace("string-to-be-replaced", "string-to-replace-with");
                        //buffer = content.ToByteArray();
                        FileStream fileStreamWrite = File.Create(outputDir+file.Name);
                        fileStreamWrite.Write(buffer, 0, buffer.Length);
                        fileStreamWrite.Close();
                    }
    

    Weiter bin ich noch nicht gekommen, weil ich nicht weiss, wie ich ein byte-Array in einen string konvertieren kann 🙄
    Falls ihr bessere Vorschläge habt, immer her damit 🙂



  • byte[] buffer = new byte[1];
    string ug = buffer.ToString();
    


  • Rudelwudel schrieb:

    byte[] buffer = new byte[1];
    string ug = buffer.ToString();
    

    @RudelWudel: Das will ich sehen, wie du das machst. Bei mir kommt nämlich System.Byte[] dabei raus.

    Um ein byte array in einen String umzuwandelm benutze die Encoding-Klasse:

    byte[] b = { 65, 66, 67 };
    MessageBox.Show(Encoding.Default.GetString(b));
    // Statt Encoding.Default kannts du auch Encodint.ASCII, Encoding.UTF8, Encoding.UTF7... benutzen
    


  • Danke!


Anmelden zum Antworten