2017-09-25 5 views
2

Je suis un tutoriel en ligne pour lire un simple fichier texte ligne par ligne dans C# mais j'ai cette erreur que je ne peux pas comprendre.Lire un fichier ligne par ligne dans C# en utilisant StreamReader

Ceci est mon code simple:

StreamReader reader = new StreamReader("hello.txt"); 

mais cela me donne une erreur:

Argument 1: cannot convert from 'string' to 'System.IO.Stream'

This article on msdn utilise le même code et là, il fonctionne, ce que je fais mal?

+1

Demandez à votre essayé un nettoyage et reconstruire? Le constructeur avec un paramètre de chaîne est définitivement valide. Je suppose que cette erreur est à la compilation correcte? –

+0

Quel cadre utilisez-vous? –

+0

@DanD difficile à dire sans connaître le framework utilisé, ce constructeur par exemple n'est pas inclus dans netStandard <2.0, aussi cela manque dans netCore <2.0 –

Répondre

3

Si vous voulez lire un fichier le plus simple est

var path = "c:\\mypath\\to\\my\\file.txt"; 
var lines = File.ReadAllLines(path); 

foreach (var line in lines) 
{ 
    Console.WriteLine(line); 
} 

Vous pouvez aussi le faire comme ceci:

var path = "c:\\mypath\\to\\my\\file.txt"; 
using (var reader = new StreamReader(path)) 
{ 
    while (!reader.EndOfStream) 
    { 
     Console.WriteLine(reader.ReadLine()); 
    } 
} 
+1

Si vous utilisez 'foreach' alors vous devriez utiliser' File.ReadLines() 'pour éviter d'avoir le fichier entier en mémoire. –

0

Vous pouvez faire comme ce

int counter = 0; 
string line; 

// Read the file and display it line by line. 
System.IO.StreamReader file = new System.IO.StreamReader("c:\\hello.txt"); 
while((line = file.ReadLine()) != null) 
{ 
    Console.WriteLine (line); 
    counter++; 
} 

file.Close(); 
+0

Quelle est l'utilité de 'counter'? De plus, pour un type qui implémente 'IDisposable', vous devriez utiliser le pattern' using' (ou mettre votre 'file.Close()' dans un bloc 'finally'): voir https://docs.microsoft.com/fr -us/dotnet/standard/garbage-collection/using-objets. – benichka