Verwenden Sie StreamWriter (), um in dieselbe Datei wie StreamReader () zu schreiben.

Ich möchte eine bestimmte Zeichenfolge in einer Reihe von Dateien suchen und ersetzen. Einige dieser Dateien können relativ groß sein, daher verwende ich dasStreamReader Klasse aus demSystem.IO Namespace.

Das Problem, das ich habe, ist, dass ich die neuen Werte nicht in eine neue Datei schreiben muss (was ich momentan habe). Ich möchte nur die aktuellen Dateien "aktualisieren".

$currentValue = "B";
$newValue = "A";

# Loop through all of the directories and update with new details. 
foreach ($file in $Directories) {
    $streamReader = New-Object System.IO.StreamReader -Arg "$file"
    $streamWriter = [System.IO.StreamWriter] "$file"
    # Switching $streamWriter to the below works.
    # $streamWriter = [System.IO.StreamWriter] "C:\Temp\newFile.txt"

    while($line = $streamReader.ReadLine()){
        # Write-Output "Current line value is $line";
        $s = $line -replace "$currentValue", "$newValue"
        # Write-Output "The new line value is $s"
        $streamWriter.WriteLine($s);
    }

    # Close the streams ready for the next loop.
    $streamReader.close();
    $streamWriter.close();
}

Write-Output "The task has complete."

Weiß jemand, wie ich vorgehen könnte?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage