Juu, miten tiedostoja käsitellään? Ja miten luodaan uusi tiedosto?
System.IO.File
sta 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 hetki
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!
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
No 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 Class
Joo, 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 Class
Eli openmode binary:ksi
Aihe on jo aika vanha, joten et voi enää vastata siihen.