PowerShell 关闭文件流
PowerShell Closing FileStream
我正在读入文件,加密内容,然后使用 PowerShell 将密文写回文件。当 FileStream 对象 ($inFS) 关闭时,它会在密码 (C:\docs) 中创建一个名为“0”的文件。我打开文件,里面写着“32”。
加密内容正在毫无问题地写入不同目录中的文件。我想缓冲区中可能还有东西,所以我尝试了 Flush() 和 Dispose() 但结果相同。这是为什么?
$inFile = 'C:\docs\algorithm_fsa.c'
$inFS = New-Object FileStream($inFile, [FileMode]::Open)
DO
{
$count = $inFS.Read($data, 0, $blockSizeBytes)
$offset += $count
$outStreamEncrypted.Write($data, 0, $count)
$bytesRead += $blockSizeBytes
}While($count > 0)
$inFS.Close()
在 PowerShell 中,>
字符用于重定向,将文本从一个命令传送到一个文件或另一个流中。
你的行
}While($count > 0)
您正在指示 PowerShell 将 $count
的内容写入标题为 0 的文件。它执行此操作,无论您恰好是哪个目录中的脚本 运行。
将 >
更改为 -GT
,这是用于大于的 PowerShell 比较运算符,您应该会得到预期的结果。
此外,此循环需要更改,因为目前它只会执行一次遍历文件,因为 $count > 0
不是可操作的比较。将 > 替换为 -gt
后,您就可以开始了。
我正在读入文件,加密内容,然后使用 PowerShell 将密文写回文件。当 FileStream 对象 ($inFS) 关闭时,它会在密码 (C:\docs) 中创建一个名为“0”的文件。我打开文件,里面写着“32”。
加密内容正在毫无问题地写入不同目录中的文件。我想缓冲区中可能还有东西,所以我尝试了 Flush() 和 Dispose() 但结果相同。这是为什么?
$inFile = 'C:\docs\algorithm_fsa.c'
$inFS = New-Object FileStream($inFile, [FileMode]::Open)
DO
{
$count = $inFS.Read($data, 0, $blockSizeBytes)
$offset += $count
$outStreamEncrypted.Write($data, 0, $count)
$bytesRead += $blockSizeBytes
}While($count > 0)
$inFS.Close()
在 PowerShell 中,>
字符用于重定向,将文本从一个命令传送到一个文件或另一个流中。
你的行
}While($count > 0)
您正在指示 PowerShell 将 $count
的内容写入标题为 0 的文件。它执行此操作,无论您恰好是哪个目录中的脚本 运行。
将 >
更改为 -GT
,这是用于大于的 PowerShell 比较运算符,您应该会得到预期的结果。
此外,此循环需要更改,因为目前它只会执行一次遍历文件,因为 $count > 0
不是可操作的比较。将 > 替换为 -gt
后,您就可以开始了。