FileStream öffnen zum Lesen eine offene Datei

11/12/2008 - 13:03 von Michael Burkhardt | Report spam
Hallo, ich möchte eine Datei mit der Klasse FileStream nur zum lesen öffnen.
Diese Datei wird aber von einem anderen Prozess beschrieben. Ein anderes
Programm von mir (Win32) kann auf diese Datei mit
"fopen((*pTP->pstrFileName), "r");" zugreifen. Unter .NET bekommen ich die
IOException Cannot access to file 'blblb' because ist is used
Ich versuche folgendermassen an die Datei zu kommen:
...
FileStream filestream = new FileStream(m_strFileName, FileMode.Open,
FileAccess.Read, FileShare.Read);
...

Was kann ich noch tun?
Danke im Voraus!
Gruß Michael
 

Lesen sie die antworten

#1 Elmar Boye
11/12/2008 - 15:42 | Warnen spam
Hallo Michael,

"Michael Burkhardt" schrieb ...
Hallo, ich möchte eine Datei mit der Klasse FileStream nur zum lesen öffnen.
Diese Datei wird aber von einem anderen Prozess beschrieben. Ein anderes
Programm von mir (Win32) kann auf diese Datei mit
"fopen((*pTP->pstrFileName), "r");" zugreifen. Unter .NET bekommen ich die
IOException Cannot access to file 'blblb' because ist is used
Ich versuche folgendermassen an die Datei zu kommen:
...
FileStream filestream = new FileStream(m_strFileName, FileMode.Open,
FileAccess.Read, FileShare.Read);



An der Stelle kann der FileShare Parameter etwas verwirrend sein,
dort ist es nàmlich anzugeben, was Du anderen Prozessen gestattest:
<URL:http://msdn.microsoft.com/de-de/lib...e.aspx>
"FileShare-Enumeration"

Versuch es mit FileShare.ReadWrite bzw. Write.

Kurzes Beispiel dazu:

internal void ReadOpenStream()
{
const string fileName = @"C:\TEMP\ausgabe.txt";

using(FileStream outputStream = new FileStream(fileName,
FileMode.Create, FileAccess.Write, FileShare.Read))
{
outputStream.Write(new byte[] { 0x41, 0x42, 0x43, 0x0d, 0x0a }, 0, 5);

using (FileStream inputStream = new FileStream(fileName,
// bei FileShare.Read => Exception
FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
byte[] inputBuffer = new byte[128];
inputStream.Read(inputBuffer, 0, 5);
}
}
}

Gruß Elmar

Ähnliche fragen