长单行文件的 Powershell 内存不足异常

Powershell out of memory exception on long single line file

我的问题是我必须拆分一个只有 1 行但很长的文件。我试着 运行 (cat $filename).split("'") 但它给了我一个内存不足的异常。有没有一种方法可以浏览文件,它不会尝试一次加载所有文件,所以我可以拆分单行。作为参考,相关文件大小为 46MB。

几年前我在处理大文件时遇到过类似的问题。假设 none 个单独的字符串超过了大小限制,这应该有效:

$InputFileName = 'C:\Temp\Temp.txt'
$StreamReader = New-Object System.IO.StreamReader($InputFileName, [System.Text.Encoding]::ASCII)
$Queue = New-Object System.Collections.Generic.Queue[char]
[string[]]$Array = @()
while ($StreamReader.EndOfStream -ne $True)
    {
    $CurrentChar = $StreamReader.Read()
    if ($CurrentChar -eq [char]"'")
        {
        [string]$Element = ''
        while ($Queue.Count -gt 0)
            {
            $Element += $Queue.Dequeue()
            }
        $Array += $Element
        }
    else
        {
        $Queue.Enqueue($CurrentChar)
        }
    }
$StreamReader.Close()

这会创建一个先进先出 (FIFO) 集合,让您的角色排队,直到遇到 '。然后将排队的字符读出到一个字符串中,该字符串被添加到数组中。