Entwickler-Ecke

IO, XML und Registry - Datei zum Lesen öffnen


LL0rd - Fr 10.08.07 12:18
Titel: Datei zum Lesen öffnen
Hallo,

ich habe da folgendes Problem:

In meinem Programm werden Daten aus einer csv Datei eingelesen, um im Programm weiterbearbeitet zu werden.


C#-Quelltext
1:
StreamReader sread = new StreamReader(new FileStream(NAME, FileMode.Open, FileAccess.Read));                    


Die Datei selbst wird mit excel geöffnet und bearbeitet. Nun tritt aber ein Fehler auf, wenn die Datei mit Excel geöffnet wird:


Quelltext
1:
The process cannot access the file '.....' because it is being used by another process                    


Ja, ist klar, da die Datei ja auch in einem anderen Programm geöffnet ist. Aber ich will die Datei trotzdem öffnen und lesen. Der Notepad kann ja auch auf die Datei zugreifen, sie mit Excel geöffnet ist (schreiben geht nicht, will ich aber auch nicht).

Hat von euch jemand eine Idee, wie ich diesen Fehler verhindern kann?


Christian S. - Fr 10.08.07 12:38

Es gibt noch einen Konstruktor von FileStream, dem man als vierten Parameter einen FileShare-Wert übergeben kann. Wenn Du dort FileShare.Read übergibst, könnte es das tun.


LL0rd - Fr 10.08.07 13:00

Hi,

Danke für die Antwort. Du meintest es so, oder?


C#-Quelltext
1:
StreamReader sread = new StreamReader(new FileStream(NAME, FileMode.Open, FileAccess.Read, FileShare.Read));                    


Es kommt da immernoch der gleiche Fehler.


le Cauchemar - Fr 10.08.07 13:30

Versuch es mal mit

C#-Quelltext
1:
StreamReader sread = new StreamReader(new FileStream(NAME, FileMode.Open, FileAccess.Read, FileShare.ReadWrite));                    

FileShare gibt doch an, wie die Datei von anderen Prozessen verwendet werden kann, oder?


LL0rd - Fr 10.08.07 13:42

Same....

Da kommt der gleiche Fehler raus. Wie öffnet denn z.B. Notepad die Datei? Macht es das nicht auf die gleiche Art?


LL0rd - Mo 13.08.07 11:24

Hat denn keiner eine Idee?