Juu, miten tiedostoja käsitellään? Ja miten luodaan uusi tiedosto?
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.
Siis kyllä lukeminen sujuu (textitiedostoilla ja varmaan muillakin) mutta lukeminen lukee vain ensimmäisen rivin. Ja System.IO.File:sta löytyy siis ne...
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 hetkiSiis näin:
FileOpen(1, "C:\testi.txt", OpenMode.Append) RichTextBox1.Text = LineInput(1) 'lukee yhden rivin input:kaan ei auta FileClose(1)
Kiitos neuvosta!
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 ClassNo nyt tuli ne mitä mä hain!!!
EDIT: Siis kyllä kirjotus sujuu mutta lukeminen luki vain yhden rivin.
Muuten, on ollut erittäin kätevät nuo System.io.file ja sys.io.directory!
ErroR++ kirjoitti:
Muuten, on ollut erittäin kätevät nuo System.io.file ja sys.io.directory!
Hyvä asia, niin minustakin.
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.
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.
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 ClassJoo, kyllä sen tiesin mutta en ole hyödyntänyt.
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 ClassEli openmode binary:ksi
Aihe on jo aika vanha, joten et voi enää vastata siihen.