Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Tiedostoista

Sivun loppuun

ErroR++ [15.06.2011 14:37:47]

#

Juu, miten tiedostoja käsitellään? Ja miten luodaan uusi tiedosto?

Hennkka [15.06.2011 15:17:37]

#

System.IO.Filesta löytyy tiedostojen käsittelyyn funktioita ja kansioita varten on System.IO.Directory.

Edit. Ja tiedostojen lukemiseen/kirjoittamiseen on FileStream, joka niin ikään löytyy System.IO-namespacesta.

ErroR++ [15.06.2011 16:09:37]

#

Siis kyllä lukeminen sujuu (textitiedostoilla ja varmaan muillakin) mutta lukeminen lukee vain ensimmäisen rivin. Ja System.IO.File:sta löytyy siis ne...

Hennkka [15.06.2011 17:17:32]

#

ErroR++ kirjoitti:

Siis kyllä lukeminen sujuu (textitiedostoilla ja varmaan muillakin) mutta lukeminen lukee vain ensimmäisen rivin. Ja System.IO.File:sta löytyy siis ne...

Täh?

Minulla ainakin lukee kaikki rivit.

Console.Write(System.IO.File.ReadAllText("teksti.txt"))
Console.ReadKey()           'Odotetaan hetki

'Tai

Dim rivit() As String = System.IO.File.ReadAllLines("teksti.txt")
For i = 0 To rivit.Length - 1
    Console.WriteLine(rivit(i))
Next
Console.ReadKey()           'Odotetaan hetki

ErroR++ [15.06.2011 17:45:48]

#

Siis näin:

FileOpen(1, "C:\testi.txt", OpenMode.Append)
RichTextBox1.Text = LineInput(1) 'lukee yhden rivin input:kaan ei auta
FileClose(1)

Kiitos neuvosta!

neau33 [15.06.2011 17:57:35]

#

Heippa taas!

tässä hiema lisää samaa paskaa...

Imports System.IO
Imports System.Text

Public Partial Class MainForm

   Private basePath As String = String.Empty
   Private txtFilePath As String = String.Empty
   Private binFilePath As String = String.Empty
   Private enc As ASCIIEncoding = Nothing

   Public Sub New()
      Me.InitializeComponent()
   End Sub

   Sub MainForm_Load(sender As Object, e As EventArgs)

      basePath = Environment.GetFolderPath( _
      Environment.SpecialFolder.Desktop)
      txtFilePath = basePath + "\test.txt"
      binFilePath = basePath + "\test.dat"
      enc = New ASCIIEncoding

   End Sub

   Sub Button1_Click(sender As Object, e As EventArgs)

      If textBox1.Text <> String.Empty Then

         'luo uuden tekstiedoston
         FileOpen(1, txtFilePath, _
         OpenMode.Output, OpenAccess.Write)

         'kirjoitta textBox1.Text sisällön tiedostoon
         Print(1, textBox1.Text): FileClose(1)
         textBox1.Clear
      Else
         textBox1.Focus
      End If

   End Sub

   Sub Button2_Click(sender As Object, e As EventArgs)

      If Dir(txtFilePath) <> String.Empty Then

         'avaa tekstitiedoston lukutilaan...
         FileOpen(1,txtFilePath, OpenMode.Input, OpenAccess.Read)

         'lukee kerralla koko tiedoston sisällön
         'ja tallentaa textBox1.Text sisällöksi
         textBox1.Text = InputString( _
         1, CType(LOF(1), Integer))

         'sulkee tiedoston.
         FileClose(1)

      End If

   End Sub

   Sub Button3_Click(sender As Object, e As EventArgs)

      If textBox1.Text <> String.Empty Then

         'alustaa tavutaulukkon...
         Dim Bytes As Byte()

         'muuntaa textBox1.Text sisällön
         'tavuiksi ja tallentaa tavutaulukkoon...
         Bytes = enc.GetBytes(textBox1.Text)

         'avaa tiedoston binaaarimuodossa kirjoitustilaan...
         '(jos tiedostoa ei vielä ole olemassa se luodaan)
         FileOpen(1, binFilePath, OpenMode.Binary, OpenAccess.Write)

         'siirtää osoitimen tiedoston loppuun...
         If LOF(1) > 0 Then
            Seek(1, LOF(1))
         End If

         'kirjoittaa tavutaulukon tavut tiedostoon...
         FilePut(1, Bytes)

         'sulkee tiedoston...
         FileClose(1)

         'tyhjentää textBox1.Text sisällön
         textBox1.Clear
      Else
         textBox1.Focus
      End If

   End Sub

   Sub Button4_Click(sender As Object, e As EventArgs)

      If Dir(binFilePath) <> String.Empty Then

         'lukee kerralla binaaritiedoston tavut
         'muuntaen samalla tavut tekstiksi ja
         'tallentaa textBox1.Text sisällöksi
         textBox1.Text = enc.GetString( _
         File.ReadAllBytes(binFilePath))

      End If

   End Sub

End Class

ErroR++ [15.06.2011 18:07:14]

#

No nyt tuli ne mitä mä hain!!!

ErroR++ [17.06.2011 15:56:21]

#

EDIT: Siis kyllä kirjotus sujuu mutta lukeminen luki vain yhden rivin.

ErroR++ [10.07.2011 22:35:31]

#

Muuten, on ollut erittäin kätevät nuo System.io.file ja sys.io.directory!

Deffi [11.07.2011 17:58:09]

#

ErroR++ kirjoitti:

Muuten, on ollut erittäin kätevät nuo System.io.file ja sys.io.directory!

Hyvä asia, niin minustakin.

ErroR++ [11.07.2011 18:22:45]

#

Neau33 kirjoitti:

'lukee kerralla koko tiedoston sisällön
        'ja tallentaa textBox1.Text sisällöksi
        textBox1.Text = InputString( _
        1, CType(LOF(1), Integer))

Tuo ei toiminut kun yritin avata jotain tyyliin "kuva.jpg"!

EDIT: Koska se oli inputString.

AimoKulaus [12.07.2011 08:27:48]

#

Visual Basicin uusissa versioissa on varsin kätevä koodipätkien lisäys.

Esimerkiksi tähän ylläolevaan alkuperäiseen ongelmaan löytyisi vastaus seuraavasti:

Klikkaa koodissa haluttuun kohtaan hiiren OIKEALLA näppäimellä
Valitse "Insert snippet..."
Sieltä edelleen "Fundamentals - Collections, ..." / "File system - Processing drives...)
Lopuksi sitten haluttu toiminto.

Koodi ilmestyy hiiren klikkauksen kohtaan. Siinä pitää yleensä vain esimerkiksi muuttaa tiedoston nimi oikeaksi.

neau33 [12.07.2011 13:21:25]

#

ErroR++ kirjoitti:

Neau33 kirjoitti:

'lukee kerralla koko tiedoston sisällön
        'ja tallentaa textBox1.Text sisällöksi
        textBox1.Text = InputString( _
        1, CType(LOF(1), Integer))

Tuo ei toiminut kun yritin avata jotain tyyliin "kuva.jpg"!

"EDIT: Koska se oli inputString.

ja vaikka se oli InputSring niin kyllä sen binaaridatan pystyy
merkkijonomuuttujaan sijoittamaan´...

Imports System.IO

Public Partial Class MainForm

   Public Sub New()
      Me.InitializeComponent()
   End Sub

   Sub OpenToolStripMenuItem_Click(sender As Object, e As EventArgs)

      openFileDialog1.RestoreDirectory = True
      openFileDialog1.FileName = Nothing
      openFileDialog1.RestoreDirectory = True
      openFileDialog1.InitialDirectory = _
      Environment.GetFolderPath( _
      Environment.SpecialFolder.MyPictures)
      openFileDialog1.Filter = _
      "Bitmap (*.bmp)|*.bmp|" + "Compuserve (*.gif)|*.gif|" + _
      "Portable (*.png)|*.png|" + "JPEG (*.jpg)|*.jpg"

      If openFileDialog1.ShowDialog = DialogResult.OK Then

         FileOpen(1, openFileDialog1.FileName, _
         OpenMode.Input, OpenAccess.Read)
         Dim strData As String = Space( CType(LOF(1), Integer))
         strData = InputString(1,CType(LOF(1), Integer))
         richTextBox1.text = strData
         FileClose(1): strData = Nothing

      End If

   End Sub

End Class

ErroR++ [13.07.2011 10:41:07]

#

Joo, kyllä sen tiesin mutta en ole hyödyntänyt.

neau33 [14.07.2011 14:53:15]

#

ErroR++ kirjoitti:

Neau33 kirjoitti:

'lukee kerralla koko tiedoston sisällön
        'ja tallentaa textBox1.Text sisällöksi
        textBox1.Text = InputString( _
        1, CType(LOF(1), Integer))

Tuo ei toiminut kun yritin avata jotain tyyliin "kuva.jpg"!

EDIT: Koska se oli inputString.

 
Kyllä ne biinaarit stringiin saa kunhan OpenMode on Binary...

Public Partial Class MainForm

   Public Sub New()

      Me.InitializeComponent()

   End Sub

   Sub OpenToolStripMenuItem_Click(sender As Object, e As EventArgs)

      openFileDialog1.RestoreDirectory = True
      openFileDialog1.FileName = Nothing
      openFileDialog1.RestoreDirectory = True
      openFileDialog1.InitialDirectory = _
      Environment.GetFolderPath( _
      Environment.SpecialFolder.MyPictures)
      openFileDialog1.Filter = _
      "Bitmap (*.bmp)|*.bmp|" + "Compuserve (*.gif)|*.gif|" + _
      "Portable (*.png)|*.png|" + "JPEG (*.jpg)|*.jpg"

      If openFileDialog1.ShowDialog = DialogResult.OK Then
         FileOpen(1, openFileDialog1.FileName, _
         OpenMode.Binary, OpenAccess.Read)
         richTextBox1.Text = InputString(1, CType(LOF(1), Integer))
         FileClose(1)
      End If

   End Sub

End Class

ErroR++ [15.07.2011 15:00:55]

#

Eli openmode binary:ksi


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta