Powershell 出现“数组尺寸超出支持范围”错误,文件大小接近 1GB

Powershell 出现“数组尺寸超出支持范围”错误,文件大小接近 1GB

下面是一个简单的 Powershell 脚本示例:

$dpath = "D:\Fill"
$mask="000000"
$sizefile = 1GB
$numfiles = 10

#file mask will be "file_000000 " = 12 chars total
$fillsize = [int]($sizefile/12)

For ($fnum=0; $fnum -lt $numfiles; $fnum++) {

    # mask filename
    $fname="$mask$fnum"
    $fnamelen=$fname.Length
    $fname=$fname.Substring($fnamelen -6)
    $fname="FILE_$fname"

    Write-Host "Generating file '$fname`.txt' $($fillsize*12) bytes / $numfiles files..."
    Write-Output $("$fname "*$fillsize) | Out-File -Encoding ASCII -FilePath "$dpath\$fname`.txt" -Force

}

基本上将重复字符集写入文本文件。这适用于略低于 1GB 的任何内容,但 1GB 会引发错误:“数组维度超出支持范围”。它可以毫无问题地获得最多 1073741784 字节,但无法获得完整的 1073741824 字节。

有什么办法可以解决这个问题吗?

这不是什么大事,因为我不需要它正好是 1GB,但如果有一个简单的修复方法,那就最好实现了。

答案1

这似乎是一个内在的限制。

成立: 除了内存限制之外,字符串不能超过 2^30(1,073,741,824)个字符,因为 Microsoft CLR(公共语言运行时)规定了 2GB 的限制。

我能想到的解决方法是计算您需要的额外字符数,将它们制作成一个 .txt 文件,然后将这个文本文件附加到您正在构建的大文件中?

或者使用另一个函数/循环来构建文件,但抱歉在这方面无法帮助您(Powershell 知识太少)。

相关内容