Powershell 更改 .net streamwriter 缓冲区大小

Powershell changing .net streamwriter buffer size

我试图通过网络将一个大字符串转储到一个文本文件中,但我每秒只能获得大约 64kbit 的速度。 阅读一些关于写入文件的不同方法,并看到使用 Streamwriter 的示例,速度非常快,但这是写入本地文件。

遇到此线程,其中的建议是增加缓冲区大小。有谁知道如何在 Powershell 中执行此操作?

包括link供参考:

Writing to file using StreamWriter much slower than file copy over slow network

谢谢!

编辑

$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
[System.IO.File]::WriteAllLines($PathToFile, $LargeTextMass, $Utf8NoBomEncoding, 0x10000)

Cannot find an overload for "WriteAllLines" and the argument count: "4".

编辑 2:

$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
$sw = new-object System.IO.StreamWriter "test2.txt", $false, $Utf8NoBomEncoding,0x10000

StreamWriter 的缓冲区是在构造期间设置的,因此您需要使用允许您在对象创建期间提供缓冲区大小的构造函数。 StreamWriter 有两个构造函数,允许您设置缓冲区大小。

StreamWriter Constructor (Stream, Encoding, Int32)

StreamWriter Constructor (String, Boolean, Encoding, Int32)

要在 Powershell 中使用构造函数参数创建 .Net 对象,您可以使用具有多个参数的 new-object cmdlet:

[System.String] $fileName = 'C:\test\test.txt'
[System.Boolean] $append = $false
[System.Int32] $bufferSize = 10000
[System.Text.Encoding] $encoding = [System.Text.Encoding]::UTF8
$writer = new-object System.IO.StreamWriter -ArgumentList $fileName,$append,$encoding,$bufferSize

有时您可能会收到一条错误消息,指出 powershell 找不到与您提供的参数相匹配的构造函数。当您自己未明确定义参数类型时,Powershell 有时会使用与 .Net 不同的数据类型。因此,显式声明具有构造函数期望的类型的所有参数是有意义的。