vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Datei nicht exklusiv öffnen 
Autor: ModeratorDaveS (Moderator)
Datum: 17.09.08 09:23

Naja, bei mir geht es seit Jahren ganz gut mit FileStream.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Datei nicht exklusiv öffnen 
Autor: Manny75
Datum: 16.09.08 09:07

Hallo...

Gibt es eine Möglichkeit, unter VB2005 eine Datei so zu öffnen und einzulesen, dass ein anderer Prozess weiterhin Daten in die Datei schreiben kann?

Es gibt zwar den Befehl "FileOpen(ff, "c:\test.txt", OpenMode.Input, OpenAccess.Read, OpenShare.Shared)" aber der ist nur aus Gründen der Abwärtskompatibilität vorhanden.

Gruss,
Manny
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datei nicht exklusiv öffnen 
Autor: Micke
Datum: 16.09.08 13:30

"aber der ist nur aus Gründen der Abwärtskompatibilität vorhanden."

das stimmt nicht, aber du kannst auch gern mit "new System.IO.FileStream(...)" arbeiten, was mehr parameter zuläßt wie z.b. async.
ich finde nicht, daß das framework beim dateizugriff wünsche offen läßt.
btw - wenn du nicht einlesen kannst, kann es ja auch am sperren durch den schreiber liegen.

Micke

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datei nicht exklusiv öffnen 
Autor: Manny75
Datum: 16.09.08 15:13

So stehts zumindest in der MSDN library...

Das Problem ist auch nicht, dass ich die Datei nicht lesen kann, sondern dass ich z.B. mit File.ReadallText die Datei exklusiv oeffne, dass die Maschine da keinen Zugriff mehr drauf hat um ihre Logs da rein zu schreiben. Und das ist irgendwie nicht Sinn der Sache...
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datei nicht exklusiv öffnen 
Autor: ModeratorDaveS (Moderator)
Datum: 16.09.08 15:38

Wie Micke schreibt kannst du ein FileStream benutzen. Das sieht etwa so aus
        Dim fsi As New IO.FileStream(pfad, IO.FileMode.Open, _
          IO.FileAccess.Read, IO.FileShare.ReadWrite)
        Dim sr As New IO.StreamReader(fsi, System.Text.Encoding.Default)
        Dim inhalt As String = sr.ReadToEnd()
        sr.Close()

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datei nicht exklusiv öffnen 
Autor: Manny75
Datum: 17.09.08 08:55

Habs gerade mal getestet, aber auch mit dem Filestream ist es nicht moeglich die Datei zu lesen und so zu oeffnen, dass andere Programm da noch was reinschreiben koennen.

Mit dem Befehl gehts interessanterweise:
FileOpen(1, Datei, OpenMode.Input, OpenAccess.Read, OpenShare.Shared)
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datei nicht exklusiv öffnen 
Autor: ModeratorDaveS (Moderator)
Datum: 17.09.08 09:27

PS. Hier sind zwei kleine Projekte, die eine Datei schreiben und gleichzeitig lesen

vbFileShareWrite:

Public Class Form1
 
    Dim fs As IO.FileStream
    Dim sw As IO.StreamWriter
 
    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As _
      System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        sw.Close()
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
        If IO.File.Exists("F:Test\share.txt") Then
            IO.File.Delete("F:Test\share.txt")
        End If
        fs = New IO.FileStream("F:Test\share.txt", IO.FileMode.Create, _
          IO.FileAccess.Write, IO.FileShare.Read)
        sw = New IO.StreamWriter(fs)
    End Sub
 
    Private ln As Integer
 
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Timer1.Tick
        ln += 1
        sw.WriteLine("A new line " & ln.ToString())
        sw.Flush()
    End Sub
 
End Class
vbFileShareRead:

Public Class Form1
 
    Dim fs As IO.FileStream
    Dim sr As IO.StreamReader
 
    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As _
      System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        sr.Close()
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
        fs = New IO.FileStream("F:Test\share.txt", IO.FileMode.Open, _
        IO.FileAccess.Read, IO.FileShare.Write)
        sr = New IO.StreamReader(fs)
    End Sub
 
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Timer1.Tick
        rtb.AppendText(sr.ReadToEnd())
        rtb.ScrollToCaret()
    End Sub
 
End Class

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel