Use StreamWriter () para escribir en el mismo archivo que StreamReader ()
Quiero encontrar y reemplazar una determinada cadena en varios archivos. Algunos de estos archivos pueden ser relativamente grandes, así que estoy usando elStreamReader
clase de laSystem.IO
espacio de nombres
El problema que tengo es que no quiero tener que escribir los nuevos valores en un nuevo archivo (que es lo que tengo actualmente). Solo quiero "actualizar" los archivos actuales.
$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."
¿Alguien sabe cómo podría hacer lo anterior?