2017-10-21 2 views
0

Sur le site doc.microsoft, nous avons la solution StreamReader comme ceC# fichier texte ouvert

using System; 
using System.IO; 

class Test 
{ 
    public static void Main() 
    { 
     try 
     { // Open the text file using a stream reader. 
      using (StreamReader sr = new StreamReader("TestFile.txt")) 
      { 
      // Read the stream to a string, and write the string to the console. 
       String line = sr.ReadToEnd(); 
       Console.WriteLine(line); 
      } 
     } 
     catch (Exception e) 
     { 
      Console.WriteLine("The file could not be read:"); 
      Console.WriteLine(e.Message); 
     } 
    } 
} 

Mais j'ai aussi rencontré différents exemples comme celui-ci

FileStream fin = null; 
try { 
    fin = new FileStream("test", FileMode.Open); 
} 

catch(IOException exc) { 
    Console.WriteLine(exc.Message); 
} 

est-il un avantage dans la définition annulable FileStream?

+0

Vous comparez des pommes et des oranges? – rene

+3

Un StreamReader a toujours un flux (un FileStream dans ce cas) sous le capot. Il prend le flux (données binaires) et le présente sous forme de texte Unicode. Il suffit de regarder les méthodes sur les deux classes et de décider lequel sera le plus utile pour votre usage prévu. –

+0

@rene Je ne sais pas, c'est pourquoi je demande. –

Répondre

3

Dans le premier exemple, le StreamReader est pas disponible à l'extérieur du bloc try (et sera Dispose() d de toute façon).

Dans le deuxième exemple, le FileStream est disponible en dehors du bloc try, mais peut être nul (lorsqu'une exception s'est produite). C'est à vous d'en disposer plus tard.