|
Останалата част от кода е часта, която прави това за което споменахме в началото на тази част от статията. С помоща на URL url = new URL(args[0]); създаваме нов обект от тип URL като адреса който ще прочете се садържа в първия низ(args[0]). Следва четенето на съдържанието това става от следният код:
CODE
Както се вижда прилагането на метод на даден обект става ИМЕ_НА_ОБКЕМТ.(ТОЧКА)ИМЕ_НА_МЕТОДА(). Методи в случая са openStream() на обеката url, readLine() и close() на обкента in. Прочитаме инфорамцията от страницата ред по ред и я записваме във една стрингова променлива newstr. Сливането на стрингове става с помоща на оператора +. Ползването на регулярни изрази е много лесно. Те трябва да са обкет от Pattern. За да намерим съвпаденията трябва да ползваме метода matcher(); CODE
Страното при ползването на регулярни изрази(може и да не е страно, ако не сте ползвали друг език за програмиране), е че трябва да „ескепйвате“ с 2 наклонени черти .(точката) в израза. С метода find() обхождаме всички съвпадения от изпълнението на регулярния израз. Със BufferedWriter създаваме обект out, който ще пише във файла който сме създали с FileWriter в случая mail.txt. CODE
Сега остава да компилираме файла и ад го пуснем за да видите как работи. Тъй като в началото не създадохме проект нямаме възможност да зададем параметри с които да се изпълни файла(виж фиг.1) фиг.1 ![]() За целта ще изшълним програмта през конзолата. Натиснате Start след това Run където напишете command -> Win9x или cmd -> WinXP, Win2k ... след което влезте в директорията където ви се намира компилирания файл(.class) и изпълнете: class ImetoNaClassa http://site.com ![]() Както виждате не се правят проверки за съвпадение на майловте. Пример 02 – проверява дали даден хост им отврорен порт(много неясно нали :)) Преди да преминем към кода на пргорамта, ще се опитам по-подорбно да обясня какво прави. Както и предишната прогмра и тази приема аргументи от конзола(command line е по правилното), но този път са 2 – хост и порт. Разделянето на тези аргументи става като ползваме интервал: java ClassName site.com 80. Във JAVA теази променливи са достъпни от масива args[] от тип стринг, като отделните елементи се разделят с интервал. аrgs[0] е хоста, а args[1] е порта. Тъй като порта не може да бъде стринг, ползваме метода parseInt() да го конвертираме: int port = Integer.parseInt(args[1]); Другото ново в този проерм е че ще ползвам е сокет: socket = new Socket(args[0], port); след което прилагаме методите на този обект да осъществим връзка: getOutputStream по което разбираме дали е отворен или не. Ако порта е отворен можем да подаден някакву данни към него, примерно ако видим че порт 80 е отворен с изпращане на: OPTIONS * HTTP/1.0rnrn ние ще получим информаци от сървъра. В случая отпечатваме само информация за сървъра. CODE
![]() Заключение: Най-верояно сте разбрали, че не разбирам от JAVA и не го понасям този език :), но така се стекоха обстоятелствата че се наложи да направя тези неща, които така и не ми потрябваха в университета. Така че надявам се на някой поне да му свършат работа. А и това е едно доказателство, че курсови задачи и домашни могат да се напишат без да разбирате нищо от даден език. Програмите работят, а това колко са полезни е друг въпрос :) Тази статия е публикувана под: Creative Commons Attribution-ShareAlike 2.5 License
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||













От тази година в първи курс (той е общ за 5-6 специалности) във въведение в информатиката трябва да им се говори малко за теория на автоматите и приложенията, та магистрите, които работим в лабораторията към катедрата сме решили да направим нещо като игра написана JAVA в която се строят автомати, разпознаващи езика описан от даден регулярен израз и да се извършват разни действия като конкатениране, обединение, емондиране, детерминиране и т.н.