Используйте StreamWriter () для записи в тот же файл, что и StreamReader ()

Я хочу найти и заменить определенную строку в ряде файлов. Некоторые из этих файлов могут быть относительно большими, поэтому я используюStreamReader класс изSystem.IO Пространство имен.

У меня проблема в том, что я не хочу записывать новые значения в новый файл (что у меня сейчас). Я хочу просто "обновить" текущие файлы.

$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."

Кто-нибудь знает, как я мог сделать выше?

Ответы на вопрос(2)

Ваш ответ на вопрос