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 后,您就可以开始了。