2009-09-07 3 views
29

Ich habe File.ReadAllText verwendet, um einige csv zu greifen, aber jedes Mal, wenn ich vergesse, die Datei in Excel zu schließen, löst die Anwendung eine Ausnahme aus, weil dies nicht möglich ist Zugriff auf die Datei erhalten.Einfachste Möglichkeit, Textdatei zu lesen, die durch eine andere Anwendung gesperrt ist

(Scheint mir verrückt, ich meine die READ in ReadAllText ziemlich klar zu sein scheint)

Ich weiß, dass es File.Open mit allen Glocken und Pfeifen, aber gibt es ein ‚Zwischen‘ Methode, die ‚doesn t involvieren Sie Unordnung mit Puffern und Char-Arrays?

Ja, ich bin faul, so stimmen mich, gib mir nur die Antwort zuerst :)

Antwort

45

Ich glaube, Sie wollen einfach nur die folgenden:

using (var fileStream = new FileStream("foo.bar", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) 
using (var textReader = new StreamReader(fileStream)) 
{ 
    var content = textReader.ReadToEnd(); 
} 

Der FileAccess.Read Parameter ist, was wichtig ist, um anzuzeigen, dass Sie nur die Datei lesen möchten. Natürlich, um dies zu tun, muss die Datei auch von Excel in lesen-Freigabe-Modus (siehe die FileShare enum in .NET) geöffnet worden sein. Ich habe es nicht getestet, daher kann ich nicht garantieren, dass Excel dies tut, obwohl ich es erwarten würde.

+0

Danke, was ist die kürzeste Sache, die ich zwischen die {} setzen kann, um die ganze Zeichenfolge aus der Datei zu bekommen? (Ich habe gesagt, ich war faul) – Benjol

+0

@Benjol: Kein Problem. Mit dem Code aktualisiert, um den gesamten Text zu lesen. – Noldorin

+0

@Noldorin, danke. Das war das fehlende Glied. Ich habe mir alle Methoden angesehen, die auf FileStream verfügbar sind, konnte ich nicht verstehen. – Benjol

0

Wenn Sie File-Sharing-Flags, um eine Datei zu öffnen, die in Gebrauch ist angeben möchten, Sie‘ steckte mit File.Open() fest.

+1

Es ist Excel, das die Datei öffnet, so dass das OP dies nicht kontrollieren kann. Er kann nur hoffen, dass Excel es im Lese-Freigabe-Modus öffnet und es selbst schreibgeschützt öffnet. – Noldorin

Verwandte Themen