Offenes Textfile in Streamreader einlesen

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Offenes Textfile in Streamreader einlesen

    Hallo,

    ich habe das Problem, dass ich ein offenes File in einen Streamreader einlesen will.

    Quellcode

    1. Dim sr As New System.IO.StreamReader(f.File)
    2. sr.ReadToEnd()


    Gibt es da irgend eine schnelle Möglichkeit, ohne die Meldung
    Der Prozess kann nicht auf die Datei "ITCInterface.log" zugreifen, da sie von einem anderen Prozess verwendet wird.

    Vielen Dank,
    Manfred
    Wenn du mich schon mit einem Hinweis auf Google IxQuick abspeisen willst...
    So schreib mir doch wenigstens die Suchbegriffe dazu :thumbup:
    Das enthält einen voll qualifizierten Dateinamen
    z.B. "c:\ITCInterface.log"
    Wenn du mich schon mit einem Hinweis auf Google IxQuick abspeisen willst...
    So schreib mir doch wenigstens die Suchbegriffe dazu :thumbup:
    Das kommt darauf an, wie diese Datei von dem anderen Prozess geöffnet wurde.
    Wenn dieser Prozess Dein Lesen unterbinden will, dann tut er dies und Du hast keine Chance.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Nein, so streng ist er nicht.
    PSPad z.B. öffnet das File anstandslos, und meldet mir sogar, wenn zwischendurch von der anderen Applikation was eingetragen wurde.

    Früher gab es da Flags beim Öffnen eines Files, ob man das File öffnen will, auch wenn ein anderer es offen hat.
    Ich kann mich nicht mehr erinnern, wie das genau geheißen hat.

    So eine Einstellung vermisse ich beim streamreader.
    Wenn du mich schon mit einem Hinweis auf Google IxQuick abspeisen willst...
    So schreib mir doch wenigstens die Suchbegriffe dazu :thumbup:
    Dann probier es mal so:

    VB.NET-Quellcode

    1. Using fs As New System.IO.FileStream(PFAD, IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.ReadWrite)
    2. ' hier auslesen
    3. End Using

    Allerdings gibt es da kein ReadToEnd()
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Oder sogar so, dann hast wieder ReadToEnd ;)

    VB.NET-Quellcode

    1. Using sr As New StreamReader(New FileStream("D:\options.txt", FileMode.Open, FileAccess.Read, FileShare.Read))
    2. End Using
    Das ist meine Signatur und sie wird wunderbar sein!
    Vielen Dank RodFromGermany und Mono.

    In der Zwischenzeit habe ich die 'saubere' Lösung gefunden:
    log4j erlaubt logfiles ohne Sperre :whistling:

    [Edit: vollständiges Beispiel und Link eingetragen:]

    In der xml-Konfiguration des log4net kann das im Appender eingetragen werden:

    Quellcode

    1. <appender name="MailFileAppender" type="log4net.Appender.FileAppender">
    2. <file value="C:\Program Files (x86)\Sage\_Entwicklung\prg\VB.2010\TradeSystem\config\ITCInterface-Mail.log" />
    3. <appendToFile value="false" />
    4. <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    5. <layout type="log4net.Layout.PatternLayout">
    6. <conversionPattern value="%date %-5level %-12logger %message%newline"/>
    7. </layout>
    8. <filter type="log4net.Filter.LevelRangeFilter">
    9. <levelMin value="DEBUG" />
    10. <levelMax value="FATAL" />
    11. </filter>
    12. </appender>


    Falls das mal jemand brauchen sollte
    Wenn du mich schon mit einem Hinweis auf Google IxQuick abspeisen willst...
    So schreib mir doch wenigstens die Suchbegriffe dazu :thumbup:

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Mandy“ ()