Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

In Binärdatei schreiben unter VB.NET

Pupille / 2 Antworten / Baumansicht Nickles

Hallo bin Anfängerprogrammierer in VB.NET. Ich möchte gerne Inhalte von Textfeldern über das Steuerelement "SaveFileDialog" in eine Datei schreiben (am Besten in eine Binärdatei oder eine Textdatei). Diese gespeicherten Inhalte der Textfelder möchte ich mir dann wieder in Textfeldern anzeigen lassen können. Wer kann mir helfen? Wäre nett, wenn jemand mir vielleicht den (Teil-)Code eines bereits geschriebenen Programms zeigen könnte.


Vielen Dank!

bei Antwort benachrichtigen
philipps Pupille „In Binärdatei schreiben unter VB.NET“
Optionen

Hi Pupille!

Zunächst einmal ist eine Binärdatei ja nix anderes als eine Datei die Binärwerte enthält. Eine Textdatei ist auch eine Binärdatei nur mit der Endung *.txt wird sie lesbar für gewisse Editor Programme oder wird als "Plain Text" interpretiert. Im Kontext des Betriebssystems ist also der Dateityp (=die Endung) massgebend für die Eigenschaft einer Datei.

Mittels SaveFileDialog kann der Benutzer dann festlegen wo er seine Datei speichern will und welchen Namen diese haben soll. Du kannst einen I/O Stream direkt aus der SaveFileDialog Klasse erstellen. Die Routine "OpenFile()" erledigt dies. Besser ist es jedoch wenn Du Dir aus dem FileDialog (merke: SaveFileDialog inherits FileDialog) mittels FileName() die Dateiinformation holst und die Datei dann entweder mittels "Create()" und/oder "Open()" aus System.IO.File schreibst.

In die Datei schreiben bzw. aus der Datei lesen ist danach ganz einfach denn mittels I/O FileStream (wie oben bereits genannt) gibt es die Routinen "Read()" und "Write()".

Hoffe das ist nicht zu kryptisch ;-) All diese Infos kannst Du Dir eigentlich bequem aus dem Object-Browser in VB.NET holen.

bei Antwort benachrichtigen
Pupille philipps „Hi Pupille! Zunächst einmal ist eine Binärdatei ja nix anderes als eine Datei...“
Optionen

Vielen Dank für die schnelle Antwort!

Mein Problem ist aber noch nicht gelöst (ich hätte vielleicht päzieser formulieren sollen). Das mit dem Stream-Objekt klappt ganz gut: Es wird eine Datei erzeugt, die ich mir im Editor auch mit ihren Inhalten anschauen kann. Ich möchte jedoch die Inhalte dieser Datei wieder jeweils in meinen Textfelder einlesen und anschauen können.


In meinem VB 6.0 Programm (dies ist funktionsfähig im Gegensatz zu meinen "Gehversuchen" mit VB.NET) sieht der Code folgendermaßen aus:

Private Sub mnuSpeichernunter_Click()
ccDialogControll.ShowSave
Dim DateiNr As Integer
DateiNr = FreeFile
Open ccDialogControll.FileName For Binary As DateiNr
Put DateiNr, , mKlassenstärke
Put DateiNr, , mSchülernummer
Put DateiNr, , mVorname
Put DateiNr, , mNachname
Put DateiNr, , mPostleitzahl
Put DateiNr, , mWohnort
Close DateiNr
End Sub

Private Sub mnuÖffnen_Click()
ccDialogControll.ShowOpen
Dim DateiNr As Integer
DateiNr = FreeFile
If ccDialogControll.FileName = "" Then Exit Sub
Open ccDialogControll.FileName For Binary As DateiNr
Get DateiNr, , mKlassenstärke
Get DateiNr, , mSchülernummer
Get DateiNr, , mVorname
Get DateiNr, , mNachname
Get DateiNr, , mPostleitzahl
Get DateiNr, , mWohnort
Close DateiNr

Dim mAktuellerSchüler As Integer
mAktuellerSchüler = mSchülernummer
lbSchülerNr.Caption = mAktuellerSchüler
txtVorname.Text = mVorname(mAktuellerSchüler)
txtNachname.Text = mNachname(mAktuellerSchüler)
txtPostleitzahl.Text = mPostleitzahl(mAktuellerSchüler)
txtWohnort.Text = mWohnort(mAktuellerSchüler)
txtKlassenstärke.Text = mKlassenstärke
End Sub


Wie kann ich in VB.NET nun den Stream wieder so einlesen, dass ich nicht nur einen Alphanumerischen Strom mit Zeichen habe, sondern dass ich diese Zeichen auch dem Array und dann anschließend den Ausgabetextfeldern korrekt zuordnen kann? Was in VB 6.0 geht muss doch auch in VB.NET gehen, oder? Für Hilfe wäre ich sehr dankbar!


Mein Code bisher (für den Write-Stream):

Private Sub mnSpeichernUnter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSpeichernUnter.Click
SaveFileDialog1.ShowDialog() 'Das Speichern-Fenster wird angezeigt.
'FileStreamobjekt
Dim obFi As FileStream = New FileStream(SaveFileDialog1.FileName, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite)


Grüße

'Streamwriterobjekt
Dim obStw As StreamWriter = New StreamWriter(obFi)

'Schreiben in das Stream-Objekt
obStw.WriteLine(byKlassenstärke)
For byNr = 1 To byKlassenstärke Step 1
obStw.WriteLine(byNr & astVorname(byNr) & vbTab & astNachname(byNr) & vbTab & astStraße(byNr) & vbTab & astPLZ(byNr) & vbTab & astWohnort(byNr))
Next byNr
obStw.Close()
End Sub

bei Antwort benachrichtigen