Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: [VB .NET] Tiedoston avoimen lukeminen

K_L [16.10.2007 13:45:04]

#

Terve,

Olen aina lukenut tiedostoja käyttäen System.IO.StreamReader. Nyt kuitenkin pitäisi päästä lukemaan tiedostoa (logi), joka on jo käytössä. En saa mitenkään tätä auki. Mitäköhän tapaa tiedoston lukemiseen pitäisi käyttää?

edit...
LOL oho hyvin nimesin otsikon. Pisteet kotiin.

vesimies [16.10.2007 15:18:10]

#

Toimisikohan FileSystemObject.OpenTextFile? Tuosta logi-tiedostosta ei kyllä ole kokemusta mutta tällä olen ainakin onnistuneesti lukenut avointa tekstitiedostoa.

dim fso as FileSystemObject
dim TekstiTiedosto as textStream
dim strRivi as string

set TekstiTiedosto=fso.OpenTextFile(...)
strRivi=TekstiTiedosto.ReadLine
'...
TekstiTiedosto.Close

Ai niin, tuo FileSystemObject-luokka on käytettävissä kunhan ottaa projektiin Scripting Runtime -komponentin.

vesimies [16.10.2007 19:07:38]

#

Oho, sori, vastasin VB6:n pohjalta vaikka se olikin .net... :[

neau33 [17.10.2007 17:07:36]

#

Moikka molemmille!

FileSystemObject-luokka on haettavissa myös .NET ympäristöön ja...

K_L [18.10.2007 10:55:19]

#

Terve,

Kiitoksia molemmille. Tosiaan tuo FileSystemObject piileksi Microsoft Scripting Runtimessä. Jahka referenssit on kunnossa, tuo esitetty tapa toimii ok.

vesimies [20.10.2007 11:10:12]

#

Multa unohtui kirjoittaa fso-olion luonti:

Set fso = CreateObject("Scripting.FileSystemObject")

Ei taida toimia ilman sitä...

Itselläni nimittäin on ohjelmassani tämä fso-muuttuja julkisena (globaalina) ja siihen asetetaan luotu olio vain kerran koko ohjelman ajon aikana. Ts. Pääohjelma-moduulissa on

Public gFso As FileSystemObject
'...
Public Sub Main()
    '...
    Set gFso = CreateObject("Scripting.FileSystemObject")
    '...

ja sitten sitä samaa oliota käytetään useiden eri tiedostojen avaukseen, jota ohjelmassa tapahtuu tuon tuostakin.

Olisiko kuitenkin parempi luoda joka kerta uusi fso-olio ja heti käytön jälkeen poistaa se muistista (Set fso = Nothing)? Entä olisiko hyvä poistaa se muistista ohjelman lopussa, siinä tapauksessa että se luodaan vain kerran?

Vastaus

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

Tietoa sivustosta