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 不同的数据类型。因此,显式声明具有构造函数期望的类型的所有参数是有意义的。
我试图通过网络将一个大字符串转储到一个文本文件中,但我每秒只能获得大约 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 不同的数据类型。因此,显式声明具有构造函数期望的类型的所有参数是有意义的。