1.5.1. fejezet, URL adatok feldolgozása
Feladat
Egy a háttértáron megadott könyvtár szerkezetének, a könyvtárszerkezetben tárolt bookmark fájlok nevének és a bennük tárolt URL címnek szöveges fájlba mentése.
Formátum:
- A listában szerepeljen minden alkönyvtár neve, a szülőkönyvtáránál három szóközzel beljebb. Minden könyvtár tartalmazhat bookmark fájlokat, és újabb alkönyvtárokat.
- A könyvtárnév utáni sorba jelenjen meg az alkönyvtárban szereplő összes bookmark fájl neve a kiterjesztés nélkül, a könyvtár nevéhez képest két szóközzel beljebb, és vele egy sorba kettőspont után a fájl második sorában szereplő URL cím.
Megoldás:
Egy eljárás, ami létrehozza az aktuális könyvtárban található alkönyvtárak és fájlok listáját, kiírja a megadott output fájlba az aktuális könyvtár nevét, a benne található URL fájlok nevét és a belőlük kinyert címet. Ha van alkönyvtár az aktuális könyvtárban, meghívja önmagát a soron következő alkönyvtárra.
Filter4Files(Dir : text, FileList : class text-list) = (class text-list) FCount, Index : integer; Truth : truth-value; Begin FCount= the number of elements in FileList; For Index= (FCount - 1) down to 0 do Truth = call g2-Directory-Exists("[Dir]/[FileList[Index]]"); if Truth is true then remove FileList[index] from FileList; End; Return FileList End
GetURLAddress(File : text) = (text) FileStream : class g2-stream; URL, URLNameCut : text; URLNameLen: integer; Begin FileStream = call g2-Open-File-For-Read("[File]"); URL = call g2-Read-Line(FileStream); URL = call g2-Read-Line(FileStream); URLNameLen = Length-of-Text(URL); URLNameCut = Get-From-Text(URL,5,URLNameLen); call g2-Close-File(FileStream); return URLNameCut; End
GetURLName(FName : text) = (Text) FNameLen: integer; FNameCut : text; Begin FNameLen = Length-of-Text(FName); FNameCut = Get-From-Text(FName,1, (FNameLen - 4)); return FNameCut; End
WWW2TXT(Dir :text, Path :text, Out :text, sp :integer) FList, DList : class text-list; FCount, FIndex, DCount, DIndex, s : integer; OFile : class g2-stream; URL, FName, spaces : text; Begin spaces = ""; DList = call g2-subdirectories-in-directory (Path); DCount = the number of elements in DList; FList = call g2-files-in-directory(Path); FList = call Filter4Files(Path, FList); FCount = the number of elements in FList; OFile = call g2-Open-File-For-Append(Out, true); For s=1 to sp do spaces="[spaces] "; End; call g2-Write-Line(OFile,"[spaces][Upper-Case-Text(Dir)]"); For FIndex=0 to (FCount - 1) do URL = call GetURLAddress("[Path]/[FList[FIndex]]"); FName = call GetURLName("[FList[FIndex]]"); call g2-Write-Line(OFile," [spaces][FName] : [URL]"); End; IF DCount > 0 then For DIndex = 0 to (DCount - 1) do call g2-Write-Line(OFile,""); call WWW2TXT (DList[DIndex],"[Path]/[DList[DIndex]]",Out,sp + 3) End; Delete FList; Delete DList; call g2-Close-File(OFile); inform the operator that "Finished."; End
- A hozzászóláshoz be kell jelentkezni