【发布时间】:2018-09-17 05:13:54
【问题描述】:
我很难理解到底发生了什么以及为什么会发生。我有一个小函数,它抓取一个 133MB 大的 PNG 图像文件的所有字节,将其存储在一个字节数组中,然后返回它。要么有一些我不理解的行为,要么可能是 PowerShell 中的错误?
$TestFile = 'C:\test.png'
function GetByteArray($InputFile) {
$ByteArray = [IO.File]::ReadAllBytes($InputFile)
Write-Host ( 'Type: ' + $ByteArray.GetType() )
Write-Host ( 'Size: ' + $ByteArray.Length )
return $ByteArray
}
$NewArray = GetByteArray -InputFile $TestFile
Write-Host ( 'Type: ' + $NewArray.GetType() )
Write-Host ( 'Size: ' + $NewArray.Length )
pause
我希望该函数返回一个大小约为 133MB 的 [Byte[]],但事实并非如此。相反,PowerShell 消耗大约 5GB RAM,打印出下面的错误消息,并返回 [System.Object[]]。
我不明白什么?为什么字节数组被转换为对象?为什么我的内存几乎都吃光了?
【问题讨论】:
-
您返回的不是字节数组,而是单个字节。
标签: powershell