230 likes | 374 Views
Visual Basic 6.0 Obrada pogona, mapa i datoteka. Uvod: Kad programirate u Windowsima, vrlo je važno imati sposobnost dodavanja, premještanja, mijenjanja, stvaranja ili brisanja mapa (direktorija) i datoteka, te upravljati pogonima i dobivati informacije o njima. Sadržaj
E N D
Visual Basic 6.0 Obrada pogona, mapa i datoteka
Uvod: Kad programirate u Windowsima, vrlo je važno imati sposobnost dodavanja, premještanja, mijenjanja, stvaranja ili brisanja mapa (direktorija) i datoteka, te upravljati pogonima i dobivati informacije o njima. Sadržaj • Uvod u model objekata datotečnog sustava • Programiranje u modelu FSO objekata
Uvod u model objekata datotečnog sustava • Jedna od osobina Visual Basica je model objekta File System Object (FSO), koji pruža alat temeljen na objektima za rad s mapama i datotekama • Model FSO objekata (model objekata datotečnog sustava) daje vašim aplikacijama sposobnost stvaranja, mijenjanja, premještanja i brisanja mapa, ili otkrivanja postoji li određena mapa, te ako postoji, gdje. • On vam takodjer omogućuje dobivanje informacija o mapama, kao što su njihova imena, datum kad su stvorene ili posljednji put mijenjane, itd. • Model FSO objekata čini također puno lakšim obradu datoteka • Možete stvarati datoteke, ubacivati i mijenjati podatke, čitati podatke, spremati vaše podatke u binarnu ili tekstualnu datoteku
Objekti datotečnog sustava objekt opis Drive Omogućuje vam skupljanje informacija o pogonima dodijeljenim sustavu. Folder Omogućuje vam stvaranje, brisanje ili premještanje mapa, te ispitivanje sustava o njihovim imenima, stazama i tako dalje. File Omogućuje vam stvaranje, brisanje ili premještanje datoteka, te ispitivanje sustava o njihovim imenima, stazama i tako dalje. FileSystemObject Glavni objekt grupe, pun postupaka koji vam omogućuju stvaranje, brisanje, dobivanje popratnih informacija, te općenito upravljanje pogonima, mapama i datotekama. Većina postupaka povezanih s ovim objektom jednaka je postupcima u ostalim objektima. TextStream Omogućuje vam čitanje i zapisivanje tekstualnih datoteka.
Programiranje u modelu FSO objekata • Programiranje u modelu FSO objekata sadržava tri glavna zadatka: • 1. Korištenje postupka CreateObject ili dimenzioniranje varijable kao objekta tipa FileSystemObject, za stvaranje objekta tipa FileSystemObject • 2. Korištenje odgovarajućeg postupka na novostvorenom objektu • 3. Pristup svojstvima objekta • 1.Stvaranje objekta tipa FileSystemObject • • Dimenzionirajte varijablu s tipom objekta FileSystemObject: • Dim fso As New FileSystemObject ‘1. način • • Upotrijebite postupak CreateObject za stvaranje objekta tipa FileSystemObject: • Set fso = CreateObject(“Scripting.FileSystemObject”) ‘2. način • U gornjoj sintaksi, Scripting je ime tipske biblioteke, a FileSystemObject je ime objekta, od kojega stvarate primjer.
Model FSO objekata je sadržan u tipskoj biblioteci nazvanoj Scripting, koja se nalazi u datoteci Scrrun.dll. • Ako već nemate pokazivač na nju, potvrdite stavku Microsoft Scripting Runtime u dijalogu References dostupnom iz izbornika Properties. • 2. Korištenje odgovarajućeg postupka • Idući korak je korištenje odgovarajućeg postupka objekta FileSystemObject. Na primjer, ako želite stvoriti novi objekt, možete upotrijebiti postupke CreateFolder ili CreateTextFile (model FSO objekata ne podržava stvaranje ili brisanje pogona) • Ako želite obrisati objekte, možete upotrijebiti postupke DeleteFile i DeleteFolder objekta FileSystemObject, ili postupak Delete objekata File i Folder • Upotrebom odgovarajućih postupaka, možete također kopirati i premještati datoteke i mape
Kako bi dobili pristup postojećempogonu, datoteci ili mapi, upotrijebite odgovarajući postupak “dobivanja” objekta FileSystemObject: • • GetDrive • • GetFolder • • GetFile • Primjer za pristup postojećoj datoteci: • Dim fso As New FileSystemObject, dato As File • Set dato = fso.GetFile(“c:\test.txt”) • Primjer za stvaranje mape: • Private Sub Stvaranje_Mape() • Dim fso As New FileSystemObject, mapa As Folder • Set mapa = fso.CreateFolder(“c:\MojTest”) • MsgBox “Stvorena mapa: “ & mapa.Name • End Sub
3. Pristup svojstvima objekta • Kad ste jednom stvorili hvataljku za objekt, možete pristupati njezinim svojstvima • Na primjer, recimo da želite dohvatiti ime određene mape. Najprije ćete stvoriti primjer objekta, zatim ćete ga dohvatitiodgovarajućim postupkom (u ovom slučaju, postupkom GetFolder, jer mapa već postoji): • Set mapa = fso.GetFolder(“c:\”) • Sad kad imate hvataljku za objekt Folder, možete provjeriti njegovo svojstvo Name: Debug.Print “Ime mape je: “; mapa.Name • Ako želite pronaći kad je datoteka posljednji put mijenjana, upotrijebite sljedeću sintaksu: • Dim fso As New FileSystemObject, dato As File • ‘ Dohvat objekta File za ispitivanje. • Set dato = fso.GetFile(“c:\detlog.txt”) • ‘ Ispis informacije. • Debug.Print “Datoteka je mijenjana: “; dato.DateLastModified
Rad s pogonima i mapama • S modelom FSO objekata možete raditi s pogonima i mapama programirajući, isto kako to interaktivno možete u Windows Exploreru • Možete kopirati i premještati mape, dobivati informacije o pogonima i mapama, i tako dalje
Dobivanje informacije o pogonima Objekt Drive omogućuje vam dobivanje informacije o raznim pogonima dodijeljenima sustavu, fizički ili putem mreže. Njegova svojstva vam omogućuju dobivanje informacija o: • ukupnoj veličini pogona u bajtovima (svojstvo TotalSize) • koliko je prostora raspoloživo na pogonu u bajtovima (svojstva AvailableSpace ili FreeSpace) • koje je slovo dodijeljeno pogonu (svojstvo DriveLetter) • koji je to tip pogona, je li izmjenjivi, tvrdi, mrežni, CD-ROM ili RAM disk (svojstvo DriveType) • serijskom broju pogona (svojstvo SerialNumber) • tip datotečnog sustava kojeg koristi pogon, kao FAT, FAT32, NTFS, i tako dalje (svojstvo FileSystem) • je li pogon na raspolaganju za upotrebu (svojstvo IsReady) • imenu dijela i/ili volumena (svojstva ShareName i VolumeName) • stazi ili korijenskoj mapi pogona (svojstva Path i RootFolder)
Primjer korištenja objekta Drive U sljedećem kodu nećete vidjeti pokazivač na stvarni objekt Drive; umjesto toga, upotrijebit ćete postupak GetDrive za dobivanje pokazivača na postojeći objekt Drive (u ovom slučaju, pog): Private Sub Command1_Click() Dim fso As New FileSystemObject, pog As Drive, s As String Set pog = fso.GetDrive(fso.GetDriveName(“c:”)) s = “Pogon “ & UCase(“c:”) & “ – “ s = s & pog.VolumeName & vbCrLf s = s & “Ukupno prostora: “ & _ FormatNumber(pog.TotalSize / 1024, 0) s = s & “ Kb” & vbCrLf s = s & “Slobodnog prostora: “ & _ FormatNumber(pog.FreeSpace / 1024, 0) s = s & “ Kb” & vbCrLf MsgBox s End Sub
Rad s mapama Sljedeći popis pokazuje uobičajene poslove s mapama i postupke za njihovo ostvarivanje: posao postupak Stvaranje mape FileSystemObject.CreateFolder Brisanje mape Folder.Delete ili FileSystemObject.DeleteFolder Premještanje mape Folder.Move ili FileSystemObject.MoveFolder Kopiranje mape Folder.Copy ili FileSystemObject.CopyFolder Dohvaćanje imena mape Folder.Name Pronalaženje postoji li mapa na pogonu FileSystemObject.FolderExists Dobivanje primjera postojećeg objekta Folder FileSystemObject.GetFolder Pronalaženje imena roditeljske mape FileSystemObject.GetParentFolderName Pronalaženje staze sistemskih mapa FileSystemObject.GetSpecialFolder
Private Sub Command2_Click() ‘ Dobivanje primjera objekta FileSystemObject. Dim fso As New FileSystemObject, mapa As Folder, s As String ‘ Dobivanje objekta Folder. Set mapa = fso.GetFolder(“c:”) ‘ Ispis imena roditeljske mape. Debug.Print “Ime roditeljske mape je: “ & mapa ‘ Ispis imena pogona. Debug.Print “Sadržana je na pogonu “ & mapa.Drive ‘ Ispis imena korijenske datoteke. If mapa.IsRootFolder = True Then Debug.Print “Ova mapa je korijenska mapa.” Else Debug.Print “ Ova mapa nije korijenska mapa.” End If ‘ Stvaranje nove mape objektom FileSystemObject. fso.CreateFolder (“c:\Lažna”) Debug.Print “Stvorena je mapa C:\Lažna.” ‘ Ispis osnovnog imena mape. Debug.Print “Osnovno ime = “ & fso.GetBaseName(“c:\Lažna”) ‘ Brisanje novostvorene mape. fso.DeleteFolder (“c:\Lažna”) Debug.Print “Obrisana je mapa C:\Lažna.” End Sub
Rad s datotekama • Možete raditi s datotekama u Visual Basicu upotrebom novih objektno usmjerenih FSO objekata , kao što su Copy, Delete, Move i OpenAsTextStream, među ostalima, ili upotrebom starijih postojećih funkcija kao što su Open, Close, FileCopy, GetAttr i tako dalje • Možete premještati, kopirati i brisati datoteke neovisno o njihovom tipu • Postoje dvije glavne kategorije upravljanja datotekama: • • Stvaranje, dodavanje ili brisanje podataka, i čitanje datoteka • • Premještanje, kopiranje i brisanje datoteka
Stvaranje datoteka i dodavanje podataka sa FSO objektima Postoje tri načina stvaranja sekvencijalne datoteke teksta (ponekad nazvane kao “tijek teksta”) 1. Korištenje postupka CreateTextFile. Praznu tekstualnu datoteku možete stvoriti ovako: Dim fso As New FileSystemObject, dato As File Set dato = fso.CreateTextFile(“c:\testdato.txt”, True) Napomena: Model FSO objekata još ne podržava stvaranje binarnih datoteka i datoteka s izravnim pristupom 2. Drugi način je upotreba postupka OpenTextFile objekta FileSystemObject s postavljenom zastavicom ForWriting: Dim fso As New FileSystemObject, ts As New TextStream Set ts = fso.OpenTextFile(“c:\testdato.txt”, ForWriting)
3. Također možete upotrijebiti postupak OpenAsTextStream s postavljenom zastavicom ForWriting: Dim fso As New FileSystemObject, dato As File, ts As _ TextStream Set fso = CreateObject(“Scripting.FileSystemObject”) fso.CreateTextFile(“test1.txt”) Set dato = fso.GetFile(“test1.txt”) Set ts = dato.OpenAsTextStream(ForWriting)
Dodavanje podataka datoteci Kad je stvorena tekstualna datoteka, možete joj dodati podatke u tri koraka: 1. Otvorite tekstualnu datoteku za zapisivanje podataka. 2. Zapišite podatke. 3. Zatvorite datoteku. Ad 1. Kako bi otvorili datoteku, možete upotrijebiti jedan od dva postupka: postupak OpenAsTextStream objekta File, ili postupak OpenTextFile objekta FileSystemObject. Ad 2. Kako bi zapisali podatke u otvorenu tekstualnu datoteku, upotrijebite postupak Write ili postupak WriteLine, oba od objekta TextStream. Jedina razlika između ova dva postupka je što postupak WriteLine dodaje karakter oznake nove linije na kraj određenog stringa. Ako želite dodati novu liniju tekstualnoj datoteci, upotrijebite postupak WriteBlankLines. Ad 3. Kako bi zatvorili otvorenu datoteku, upotrijebite postupak Close objekta TextStream.
Čitanje podataka sa FSO objektima • Kako bi pročitali podatke iz tekstualne datoteke, upotrijebite postupke Read, ReadLine ili ReadAll objekta TextStream: • posao postupak • Čitanje određenog broja karaktera iz datoteke Read • Čitanje cijele linije (sve do, ali ne uključujući, ReadLine • karakter oznake nove linije) • Čitanje cijelog sadržaja tekstualne datoteke ReadAll • Ako koristite postupke Read ili ReadLine i želite preskočiti do određenog dijela podataka, možete upotrijebiti postupke Skip ili SkipLine. • Rezultirajući tekst postupaka čitanja spremljen je u stringu koji može biti prikazan u kontroli, dijeljen operatorima stringa (kao što su Left, Right i Mid), ulančan i tako dalje.
Primjer: Sub Čitanje_Datoteka() Dim fso As New FileSystemObject, txtdatoteka, _ dat1 As File, ts As TextStream Set txtdatoteka = fso.CreateTextFile(“c:\testdato.txt”, _ True) MsgBox “Zapisivanje datoteke” ‘ Zapisivanje linije. Set dat1 = fso.GetFile(“c:\testdato.txt”) Set ts = dat1.OpenAsTextStream(ForWriting) ts.Write “Pozdrav svijetu” ts.Close ‘ Čitanje sadržaja datoteke. Set ts = dat1.OpenAsTextStream(ForReading) s = ts.ReadLine MsgBox s ts.Close End Sub
Premještanje, kopiranje i brisanje datoteka Model FSO objekata ima po dva postupka za premještanje, kopiranje i brisanje datoteka: posao postupak premještanje datoteke File.Move ili FileSystemObject.MoveFile kopiranje datoteke File.Copy ili FileSystemObject.CopyFile brisanje datoteke File.Delete ili FileSystemObject.DeleteFile Primjer: Ovaj primjer stvara tekstualnu datoteku u korijenskom (root) direktoriju pogona C, zapisuje neke informacije u nju, premješta je u direktorij imena \tmp, stvara njezinu kopiju u direktoriju imena \temp, te zatim briše kopije iz oba direktorija.
Sub Upravljanje_datotekama() Dim fso As New FileSystemObject, txtdatoteka, dat1, dat2 Set txtdatoteka = fso.CreateTextFile(“c:\testdato.txt”, True) MsgBox “Zapisivanje datoteke” ‘ CreateTextFile vraća TextStream ‘ Zapisivanje linije. objekt txtdatoteka.Write(“Ovo je test.”) ‘ Zatvaranje datoteke za zapisivanje. txtdatoteka.Close MsgBox “Premještanje datoteke u c:\tmp” ‘ Dobivanje hvataljke za datoteku u korijenskom dir-u c:\. Set dat1 = fso.GetFile(“c:\testdato.txt”) ‘ Premještanje datoteke u direktorij \tmp. dat1.Move(“c:\tmp\testdato.txt”) MsgBox “Kopiranje datoteke u c:\temp” ‘ Kopiranje datoteke u \temp. dat1.Copy(“c:\temp\testdato.txt”) MsgBox “Brisanje datoteke” ‘ Dobivanje hvataljki za trenutne položaje datoteka. Set dat1 = fso.GetFile(“c:\tmp\testdato.txt”) Set dat2 = fso.GetFile(“c:\temp\testdato.txt”) ‘ Brisanje datoteka. dat1.Delete dat2.Delete MsgBox “Sve je obavljeno!” End Sub