Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

StreamWriter: The process can not access the file

Empfohlene Antworten

Veröffentlicht

Hallo,

ich komme gerade mit meinen kleinen Programm nicht weiter. Und zwar habe ich eine .ini-Datei wo Einstellungen drin gespeichert werden. Wenn ich jetzt in meinen Programm die Optionen aufrufe lese ich mit dem Streamreader alle wichtigen Daten aus:

'myStreamreader dem StreamReader zuweisen mit den Werten "iniPath" + "codetypes.ini"

myStreamreader = New System.IO.StreamReader(iniPath & "\codetypes.ini")


'ReadtoEnd

iniText = myStreamreader.ReadToEnd


'Füllen von Variablen mit den Einstellungen aus der Ini-Datei

ean13 = iniText.Substring(iniText.IndexOf("<ean13>") + 7, iniText.IndexOf("</ean13>") - iniText.IndexOf("<ean13>") - 7)

code39 = iniText.Substring(iniText.IndexOf("<code39>") + 8, iniText.IndexOf("</code39>") - iniText.IndexOf("<code39>") - 8)

code128 = iniText.Substring(iniText.IndexOf("<code128>") + 9, iniText.IndexOf("</code128>") - iniText.IndexOf("<code128>") - 9)

interleaved = iniText.Substring(iniText.IndexOf("<interleaved>") + 13, iniText.IndexOf("</interleaved>") - iniText.IndexOf("<interleaved>") - 13)

discrete = iniText.Substring(iniText.IndexOf("<discrete>") + 10, iniText.IndexOf("</discrete>") - iniText.IndexOf("<discrete>") - 10)


'Schliessen der Ini-Datei

myStreamreader.Close()

myStreamreader = Nothing
Wenn ich dann meine Einstellungen vorgenommen habe und wieder auf Speichern drücke sollen alle aktuellen Einstellungen mit Hilfe des Streamwriters ganz neu in die .ini-Datei geschrieben werden:
myStreamwriter = New System.IO.StreamWriter("\Program Files\scanner\codetypes.ini", False)

myStreamwriter.WriteLine("//ini-File für die Programmeinstellungen")

myStreamwriter.WriteLine("//----------------------------------------------------------------")

myStreamwriter.WriteLine("")

myStreamwriter.WriteLine("//Barcodetypen")

myStreamwriter.WriteLine("")

myStreamwriter.WriteLine("//EAN 13")

myStreamwriter.WriteLine("<ean13>" & ean13 & "</ean13>")

myStreamwriter.WriteLine("")

myStreamwriter.WriteLine("//Code 39")

myStreamwriter.WriteLine("<code39>" & code39 & "</code39>")

myStreamwriter.WriteLine("")

myStreamwriter.WriteLine("//Code 128")

myStreamwriter.WriteLine("<code128>" & code128 & "</code128>")

myStreamwriter.WriteLine("")

myStreamwriter.WriteLine("//Interleaved")

myStreamwriter.WriteLine("<interleaved>" & interleaved & "</interleaved>")

myStreamwriter.WriteLine("")

myStreamwriter.WriteLine("//Discrete")

myStreamwriter.WriteLine("<discrete>" & discrete & "</discrete>")

myStreamwriter.WriteLine("")

myStreamwriter.Close()

myStreamwriter = Nothing

Das Problem ist jetzt nur, dass ich jedesmal die Fehlermeldung "IOException wurde nicht behandelt" bekomme in der zusätzlich noch drin steht: The process can not acces the file "hier der Pfad" because it is being used by another process.

Ich verstehe nicht wieso er mir sagt, dass die Datei noch von einem anderen Prozess verwendet wird. Ich habe den Streamreader doch geschlossen u.s.w. ...

Bei Google habe ich auch schon geguckt. Es gibt zwar eine Menge Einträge zu dieser Fehlermeldung aber ich habe die Erklärungen nicht ganz verstanden.

Gruß,

Hahne


myStreamreader = New System.IO.StreamReader(iniPath & "\codetypes.ini")

myStreamwriter = New System.IO.StreamWriter("\Program Files\scanner\codetypes.ini", False)

Diese beiden Zeilen enthalten Fehler. "\" leitet Escape-Sequenzen ein, d.h. um ein "\"-Symbol in den String einzufügen musst Du entweder "\\" schreiben oder vor den String ein "@" setzen. Beispiel:

string test = "Verzeichnis\\Unterverzeichnis\\Dateiname";

oder

string test = @"Verzeichnis\Unterverzeichnis\Dateiname";

Ausserdem solltest Du nicht in "Program Files" schreiben (es können die Berechtigungen fehlen), sondern an für Konfigurationsdaten vorgesehene Orte.

Ein weiteres Problem ist, dass "Program Files" je nach Betriebssystemversion und Sprachversion auch anders benannt sein kann. Generell sollte man keine festen Annahmen darüber machen, von wo das eigene Programm ausgeführt wird (es könnte ja auch in ein anderes Verzeichnis installiert worden sein) und wie der genaue Pfad zu einem Verzeichnis, in dem Konfigurationsdaten abgelegt werden dürfen, lautet.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.