Ich versuche, eine Reihe von großen Dateien zu durchsuchen und Teile des Textes zu ersetzen, aber ich laufe weiterhin in Fehler.Verwenden Sie .NET für schnelles Lesen/Schreiben von großen Dateien
Ich habe versucht, diese, aber manchmal werde ich eine 'out of memory' Fehler in Powershell diese
#region The Setup
$file = "C:\temp\168MBfile.txt"
$hash = @{
ham = 'bacon'
toast = 'pancakes'
}
#endregion The Setup
$obj = [System.IO.StreamReader]$file
$contents = $obj.ReadToEnd()
$obj.Close()
foreach ($key in $hash.Keys) {
$contents = $contents -replace [regex]::Escape($key), $hash[$key]
}
try {
$obj = [System.IO.StreamWriter]$file
$obj.Write($contents)
} finally {
if ($obj -ne $null) {
$obj.Close()
}
}
dann habe ich versucht, bekommen (in der ISE), aber es stürzt mit einer Popup-Nachricht (sorry, den Fehler nicht auf der Hand) und versucht, die ISE
$arraylist = New-Object System.Collections.ArrayList
$obj = [System.IO.StreamReader]$file
while (!$obj.EndOfStream) {
$line = $obj.ReadLine()
foreach ($key in $hash.Keys) {
$line = $line -replace [regex]::Escape($key), $hash[$key]
}
[void]$arraylist.Add($line)
}
$obj.Close()
$arraylist
und schließlich neu zu starten, stieß ich auf so etwas, aber ich bin nicht sicher, wie es richtig zu nutzen, und ich bin nicht einmal sicher, wenn ich das richtig mache.
$sourcestream = [System.IO.File]::Open($file)
$newstream = [System.IO.File]::Create($file)
$sourcestream.Stream.CopyTo($newstream)
$sourcestream.Close()
jeder Rat würde sehr geschätzt werden.
Okay, so wie bekomme ich alle Zeilen, nachdem ich bin fertig mit den ersten 1000? –
aus der Hilfedatei: '-ReadCount Gibt an, wie viele Inhaltszeilen gleichzeitig durch die Pipeline gesendet werden. Der Standardwert ist 1. Ein Wert von 0 (Null) sendet den gesamten Inhalt auf einmal. Dieser Parameter ändert nicht den angezeigten Inhalt, aber die Zeit, die zum Anzeigen des Inhalts benötigt wird. Wenn der Wert von ReadCount erhöht wird, erhöht sich die Zeit, die benötigt wird, um die erste Zeile zurückzugeben, aber die Gesamtzeit für die Operation nimmt ab. Dies kann bei sehr großen Objekten einen wahrnehmbaren Unterschied machen. –
Kiran
Funktioniert Ihr Beispiel, wenn ich versuche, in dieselbe Datei zu schreiben, von der ich gerade lese? –