2017-03-23 1 views
0

J'essaye d'exporter une grande chaîne dans un fichier texte sur le réseau, mais je ne fais que 64kbit par seconde. Lire un peu sur les différentes méthodes pour écrire des fichiers et voir des exemples en utilisant Streamwriter qui était assez rapide, mais qui écrivait dans un fichier local.Powershell changer la taille du tampon .net streamwriter

A rencontré ce fil où la recommandation était d'augmenter la taille de la mémoire tampon. Est-ce que quelqu'un sait comment faire cela dans Powershell?

Y compris le lien pour la référence:

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

Merci!

Modifier

$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". 

Edit 2:

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

à peu près la façon dont il est expliqué dans l'exemple que vous avez lié. Vous créez votre streamwriter avec les paramètres constructeurs nécessaires, dans ce cas, le flux, l'encodage et la taille de la mémoire tampon: https://msdn.microsoft.com/fr-fr/library/72d9f8d5(v=vs.110). aspx. Ou taille de chaîne, de booléen, d'encodage et de tampon: https://msdn.microsoft.com/en-us/library/0wf7ab94(v=vs.110).aspx –

+0

La première tentative n'a pas fonctionné si bien. Peut-être que je dois le créer en premier. – PatrikJ

+0

Oui, vous devez d'abord créer l'objet avec les paramètres, par exemple: $ sw = new-object System.IO.StreamWriter $ path System.Text.Encoding.UTF8 $ false 10000. Vous pouvez créer des objets .Net avec paramètres du constructeur avec new-object. –

Répondre

1

Le tampon d'un StreamWriter est défini lors de la construction, de sorte que vous devez utiliser un constructeur qui vous permet de fournir la taille de la mémoire tampon lors de la création d'objets . StreamWriter a deux constructeurs qui vous permettent de définir la taille de la mémoire tampon.

StreamWriter Constructor (Stream, Encoding, Int32)

StreamWriter Constructor (String, Boolean, Encoding, Int32)

Pour créer un objet .Net dans Powershell avec les paramètres du constructeur, vous pouvez utiliser l'applet de commande new-object avec plusieurs paramètres:

[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 

parfois vous pouvez obtenir une erreur indiquant Cette PowerShell n'a pas pu trouver un constructeur correspondant aux paramètres que vous avez fournis. Powershell utilise parfois des types de données différents de .Net lorsqu'il ne définit pas explicitement le type de paramètre vous-même. Il peut donc être logique de déclarer explicitement tous les paramètres avec le type attendu par le constructeur.

+0

Merci beaucoup, et merci pour l'explication! – PatrikJ