Ćwiczenia 5-6

Napisać aplikację, która tworzy (zapisuje) plik HTML, zawierający tytuły innych plików HTML (z podanego katalogu i jego podkatalogów; w szczególności z całego dysku)..
Tytuły (jeśli są) znajdują się w plikach HTML pomiędzy znacznikami <title> ... </title>.
Tytuły innych plików zapisane do wyjściowego pliku HTML powinny zarazem być linkami, pozwalającymi otwierać dane pliki. Tekst odnośnika zawiera tytuł oraz - w nawiasach okrągłych nazwę pliku - bez ścieżki.

Przy generacji pliku z tytulami powinny ze sobą współpracować dwa wątki.
Wątek 1 przegląda system plikowy  rekursywnie wchodząc we wszystkie podkatalogi (poczynając od katalogu podanego na starcie aplikacji) i odnajduje pliki html. Nazwy plików przekazuje równolegle działającemu wątkowi 2.
Wątek 2 w każdym otrzymanym pliku wyszukuje tytuł i zapisuje go jako odnośnik w wyjściowym pliku HTML.
Postępy przekształcenia powinny być uwidaczaniane na konsoli (lub graficznie).
Oprócz tego aplikacja powinna udostępniać dialog, z którego można będzie zakończyć działanie obu wątków.

Na co trzeba zwrócić uwagę:

Ilustracja - pomoc:

Na dysku G, w kalogu TEMP są następujące katalogi i pliki:
test  - katalog
    W23 - katalog
        dodatki - katalog
            W2EfUb.htm
            W2RexxTyp.htm
        W2A.htm - plik
        W3A.htm - plik   
    W12.htm - plik
     test.html  - plik

Ten ostatni ma taką postać:
<html>
<head>
<title>Po co wróbel ćwierka
nocą
w niegdysiejszych kęskach świnki
</title>
</head>
<body></body>
</html>
Uwaga: domyślna systemowa strona kodowa Windows-1250 i w takim kodzie jest również zapisany powyższy plik.
       

Przykładowy wygenerowany przez program  plik HTML z tytulami wygląda tak (to są linki, które prowadzą do plików w omówionym katalogu na dusku G):

Wykład 2 (W2A.HTM)
Efekty uboczne (W2EfUb.htm)
Języki z typami i jęzki beztypowe (W2RexxTyp.htm)
Wykład 3 (W3A.HTM)
Wykład 12 - Architektura MVC (W12.htm)
Po co wróbel ćwierka nocą w niegdysiejszych kęskach świnki (test.html)

a jego kod HTML - tak:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
</head>
<body>
<br><a href="file:///G:\TEMP\Test\W23\W2A.HTM"> Wykład 2 (W2A.HTM)</a>
<br><a href="file:///G:\TEMP\Test\W23\dodatki\W2EfUb.htm"> Efekty uboczne (W2EfUb.htm)</a>
<br><a href="file:///G:\TEMP\Test\W23\dodatki\W2RexxTyp.htm"> Języki z typami i jęzki beztypowe (W2RexxTyp.htm)</a>
<br><a href="file:///G:\TEMP\Test\W23\W3A.HTM"> Wykład 3 (W3A.HTM)</a>
<br><a href="file:///G:\TEMP\Test\W12.htm"> Wykład 12 - Architektura MVC (W12.htm)</a>
<br><a href="file:///G:\TEMP\Test\test.html"> Po co wróbel ćwierka noc+ w niegdysiejszych kęskach ¶winki </title> </head> <body></body> (test.html)</a>
</body>
</html>



Proszę sięgnąć do dokumentacji HTML dla zapoznania się ze znaczeniem pokazanych tu metaznaczników i znaczników.


Punktacja:
Problemy do przemyślenia: