[ Krsta @ 31.08.2003. 01:37 ] @
Na predlog mladenovicz-a, a posto na forumu ima dosta pitanja vezanih za ovu temu postavljam ovaj topic za sve nejasnoce sa FSO-om. |
[ Krsta @ 31.08.2003. 01:37 ] @
[ degojs @ 31.08.2003. 23:54 ] @
Dok se ne odluči neko da napiše nešto, evo pomoći za FSO sa MSDN-a.
WSH malo detaljnije na ovoj stranici U stvari, za Windows Script evo ovde zvanične dokumentacije u vidu fajla (1.36 MB) koji se skine pa lepo off-line proučavaš sve vezano za Windows skriptovanje. Odnosno sve to gore i još ponešto može da se nađe na početnoj stanici za Windows Script. [ mladenovicz @ 02.09.2003. 13:13 ] @
Da bi se koristio FileSystemObject potrebno je u References ukljuciti Microsoft Scripting Runtime (scrrun.dll).
FileSystemObject OBJEKTNI MODEL (koristim Code tag jer je tako lepo formatirano :)) Code: --------------------------------------------------------------------------------- OBJEKAT KOLEKCIJA OPIS --------------------------------------------------------------------------------- Dictionary Top-level objekat. Slican VBA Collection objektu. Drive Drives Predstavlja drajv/kolekciju drajvova. File Files Predstavlja fajl/kolekciju fajlova. FileSystemObject Top-level objekat. Koristi se za pristup i rad sa drajvovima , folderima i fajlovima Folder Folders Predstavlja folder/kolekciju foldera TextStream Koristi se za rad sa tekstualnim fajlovima (read, write, append) --------------------------------------------------------------------------------- 1. TextStream OBJEKAT Kreira se metodoma FileSystemObjecta OpenTextFile ili CreateTextFile. 1.1. OpenTextFile Otvara navedeni fajl, vraca TextStream objekat koji se moze koristiti za citanje ili pisanje u fajl. Code: object.OpenTextFile(filename[, iomode[, create[, format]]]) object - FSO filename - Naziv fajla iomode - Opcioni parametar, input/output mode (ForReading=1, ForWriting=2, ForAppending=8) create - Opcioni parametar tipa Boolean, indikator da li treba kreirati fajl ako ne postoji. Default vrednost je False format - Opcioni parametar, predstavlja format fajla TristateUseDefault=-2 koristi se system default TristateTrue=-1 Unicode TristateFalse=0 ASCII Default vrednost je TristateFalse 1.2. CreateTextFile Kreira fajl, vraca TextStream objekat koji se moze koristiti za citanje ili pisanje u fajl. Code: object.CreateTextFile(filename[, overwrite[, unicode]]) object - FileSystemObject ili Folder objekat. filename - naziv fajla koji treba da bude kreiran overwrite - Opcioni parametar, tipa Boolean, da li treba 'pregaziti' fajl ako postoji. Default False unicode - Opcioni parametar, tipa Boolean, da li fajl kreirati kao Unicode (True) ili ASCII (False). Default False TextStream PROPERTIES AtEndOfLine - Boolean, Read Only, vraca True ako je fajl pointer pozicioniran na EOL (end-of-line) marker tj. na kraj linije. Moze se koristiti samo ako je TextStream fajl otvoren za citanje. AtEndOfStream - Boolean, Read Only, vraca True ako je fajl pointer pozicioniran na kraj TextStream fajla. Moze se koristiti samo ako je TextStream fajl otvoren za citanje. Column - Read Only, vraca redni broj kolone u kojoj se nalazi karakter na koji je pozicioniran fajl pointer Line - Read Only, vraca redni broj linije fajla u kojoj se nalazi fajl pointer TextStream METHODS Close - zatvara otvoreni TextStream fajl Read(characters) - cita odredjeni broj karaktera iz fajla i vraca odgovarajuci string ReadAll - cita ceo fajl i vraca sadrzaj u jednom stringu ReadLine - cita tekucu liniju iz fajla Skip(characters) - preskace (ignorise) oderedjeni broj karaktrera iz fajla SkipLine - preskace (ignorise) tekucu liniju u fajlu Write(string) - upisuje string u fajl WriteLine([string]) - upisuje string u fajl i oznaku za prelazak u novi red. Ako se string izostavi, upisuje oznaku za prelazak u novi red. WriteBlankLines(lines) - upisuje odredjeni broj oznaka za prelazak u novi red (praznih linija) PRIMERI: 1. Kod koji otvara fajl i upisuje u njega string (za dodavanje na kraj fajla koristiti ForAppending umesto ForWriting) Code: Dim oFSO As Scripting.FileSystemObject Dim oTextStream As Scripting.TextStream Set oFSO = New Scripting.FileSystemObject Set oTextStream = oFSO.OpenTextFile("C:\test.txt", _ ForWriting, _ True, _ TristateFalse) oTextStream.WriteLine ("JUHU") oTextStream.Close Set oTextStream = Nothing Set oFSO = Nothing 2. Citanje fajla karakter po karakter Code: Dim oFSO As Scripting.FileSystemObject Dim oTextStream As Scripting.TextStream Set oFSO = New Scripting.FileSystemObject Set oTextStream = oFSO.OpenTextFile("C:\test.txt", _ ForReading, _ True, _ TristateFalse) While Not oTextStream.AtEndOfStream Debug.Print oTextStream.Read (1) Wend oTextStream.Close Set oTextStream = Nothing Set oFSO = Nothing 3. Citanje fajla, liniju po liniju Code: Dim oFSO As Scripting.FileSystemObject Dim oTextStream As Scripting.TextStream Set oFSO = New Scripting.FileSystemObject Set oTextStream = oFSO.OpenTextFile("C:\test.txt", _ ForReading, _ True, _ TristateFalse) While Not oTextStream.AtEndOfStream Debug.Print oTextStream.ReadLine Wend oTextStream.Close Set oTextStream = Nothing Set oFSO = Nothing Cini mi se da bi ovo moglo nekako lepse da se formatira ali ne znam kako, tako da ako moderatori misle da ovo moze lepse da izgleda, samo napred menjate. Mislim da je ovo dovoljno za citanje/pisanje u fajl. Anyway, nastavice se :) [Ovu poruku je menjao mladenovicz dana 02.09.2003. u 16:06 GMT] [ mladenovicz @ 02.09.2003. 14:04 ] @
2. Drive OBJEKAT i Drives KOLEKCIJA
Drive objekat omogucava pristup informacijama o odredjenom drajvu. Drive objekat se dobija metodom GetDrive FileSystemObjecta ili pristupom itemu u kolekciji Drives. Posto se iz naziva propertya vidi sta taj property znaci, mislim da ih ne treba objasnjavati. Mozda bi trebalo izdvojiti IsReady property. IsReady property za removable i CD-ROM drajvove vraca True ako je medij unutra. Ovim propertyjem se moze ispitati da li je CD u CD-ROMu. PRIMERI: 1. Sledeci kod ide kroz sve drajvove koji su prisutni na sistemu i ispisuje tip drajva i da li je drajv Ready. Code: Dim oFSO As Scripting.FileSystemObject Dim oDrive As Scripting.Drive Dim sType As String Dim sMsg As String Set oFSO = New Scripting.FileSystemObject For Each oDrive In oFSO.Drives Select Case oDrive.DriveType Case 0: sType = "Unknown" Case 1: sType = "Removable" Case 2: sType = "Fixed" Case 3: sType = "Network" Case 4: sType = "CD-ROM" Case 5: sType = "RAM Disk" End Select sMsg = "Drive " & oDrive.DriveLetter & ": - " & sType If oDrive.IsReady Then sMsg = sMsg & " - Drive is Ready." Else sMsg = sMsg & " - Drive is not Ready." End If Debug.Print sMsg Next Set oFSO = Nothing 2. sledeci kod ispisuje neke informacije o svim ready drajvovima na sistemu Code: Dim oFSO As Scripting.FileSystemObject Dim oDrive As Scripting.Drive Dim sType As String Set oFSO = New Scripting.FileSystemObject For Each oDrive In oFSO.Drives If oDrive.IsReady Then Debug.Print oDrive.DriveLetter, _ oDrive.VolumeName, _ oDrive.FileSystem, _ oDrive.TotalSize, _ oDrive.FreeSpace, _ oDrive.DriveType End If Next Set oFSO = Nothing 3. koriscenje GetDrive metoda Code: Private Sub m_ShowFreeSpace(drvPath) Dim oFSO As Scripting.FileSystemObject Dim oDrive As Scripting.Drive Dim sMsg As String Set oFSO = New Scripting.FileSystemObject Set oDrive = oFSO.GetDrive(oFSO.GetDriveName(drvPath)) sMsg = "Drive " & UCase(drvPath) & " - " sMsg = sMsg & oDrive.VolumeName & vbCrLf sMsg = sMsg & "Free Space: " & FormatNumber(oDrive.FreeSpace / 1024, 0) sMsg = sMsg & " Kbytes" Debug.Print sMsg Set oDrive = Nothing Set oFSO = Nothing End Sub [ mladenovicz @ 02.09.2003. 14:38 ] @
3. Folder OBJEKAT i Folders KOLEKCIJA
Folder objekat se dobija metodom GetFolder FSOa i omogucava pristup informacijama o folderu, kao i osnovne operacije sa folderima tipa Copy, Delete, Move. Nazivi Propertyja i metoda su desckriptivni i mislim da ih ne treba objasnjavati. PRIMERI: 1. Ispis svih subfoldera i fajlova u folderu Code: Private Sub m_FolderInfo(folderspec) Dim oFSO As Scripting.FileSystemObject Dim oFolders As Scripting.Folders Dim oFolder As Scripting.Folder Dim oSubFolder As Scripting.Folder Dim oFiles As Scripting.Files Dim oFile As Scripting.File Set oFSO = New Scripting.FileSystemObject If Not oFSO.FolderExists(folderspec) Then MsgBox "Path not found" Exit Sub End If Set oFolder = oFSO.GetFolder(folderspec) Set oFolders = oFolder.SubFolders Debug.Print "SUBFOLDERS:" For Each oSubFolder In oFolders Debug.Print oSubFolder.Name, _ oSubFolder.DateCreated, _ oSubFolder.Size Next Set oFiles = oFolder.Files Debug.Print "FILES:" For Each oFile In oFiles Debug.Print oFile.Name, _ oFile.DateCreated, _ oFile.Size, _ oFile.Type Next Set oFolders = Nothing Set oFolder = Nothing Set oFiles = Nothing Set oFSO = Nothing End Sub [ mladenovicz @ 02.09.2003. 15:03 ] @
4. FileSystemObject
Top-level objekat, omogucava rad sa fajlovima, folderima i drajvovima. Metode za rad sa folderima: -CreateFolder -CopyFolder -DeleteFolder -FolderExists -GetFolder -GetSpecialFolder - vraca specijalne foldere (WindowsFolder, SystemFolder, TemporaryFolder) -GetTempName - vraca slucajno generisan naziv koji se moze koristiti za temporary folder -GetParentFolderName -MoveFolder Metode za rad sa fajlovima -CopyFile -CreateTextFile -DeleteFile -FileExists -GetFile -GetExtensionName -GetFileName -GetFileVersion -GetTempName -MoveFile -OpenTextFile Metode za rad za drajvovima -DriveExists -GetDrive -GetDriveName -Drives property - (kolekcija postojecih drajvova) Ostale metode -BuildPath(path, name) - kreira putanju, tako sto na path nakaci name. Path separator ce biti dodat ako je potrebno -GetAbsolutePathName - vraca apsolutnu putanju u odnosu na tekuci folder -GetBaseName (GetBaseName("C:\My Music\DMyMusic") vrati DMyMusic) Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|