2013-01-31 6 views
-1

Je dois travailler avec certains fichiers contenant du texte en cyrillique et j'utilise StreamReader/StreamWriter dans Visual Studio 2012 Ultimate.Un bug de studio visuel avec StreamWriter ou mon malentendu?

Cependant, il y a un problème ridicule (ou mon malentendu). Le constructeur suivant fonctionne très bien:

using (StreamReader reader = new StreamReader(someFile, Encoding.Default)){ 
} 

Pourtant, quand je les opérations suivantes:

using (StreamWriter writer = new StreamWriter(someOtherfile, Encoding.Default)){ 
} 

Je reçois une erreur de compilation pour un constructeur ivalid. Pourtant, ce qui suit est dans la spécification à MSDN:

public StreamWriter(Stream stream, Encoding encoding); 

Qu'est-ce que je fais mal?

+3

Êtes-vous sûr que * someOtherfile * est un flux aussi ou un type convertible en flux? – Tigran

+0

Oui, cela arrive chaque fois que je l'essaye, même quand, après avoir fermé le fichier/flux que je viens d'ouvrir avec StreamReader, j'essaie de l'ouvrir avec StreamWriter. –

+0

@JohnSmith poster le code où vous déclarez et modifiez 'somefile' et' someotherfile'. – Mansfield

Répondre

5

Si vous regardez les différences entre les StreamWriter et StreamReader vous verrez que tout there is a constructor de:

StreamReader(string, Encoding) 

il n'est pas un constructeur de

StreamWriter(string, Encoding) 

Je pense que le type de someFile et someOtherFile est string, et non Stream.

Je également conseille de ne pas utiliser Encoding.Default à moins que vous êtes vraiment, vraiment sûr que vous voulez que l'encodage par défaut spécifique à la plateforme, qui peut très bien ne pas traiter tous Unicode. Si vous le pouvez, utilisez plutôt UTF-8.

+0

Merci, je l'ai résolu en utilisant le StreamWriter public (string string, bool append, Encoding encoding); constructeur. –