import java.net.*; import java.io.*; import java.net.URL.*; import java.util.*; import java.lang.Comparable.*; public class URLabi { /* * String refref(String link) * URL urliks(String urlsone) * String http_html(URL u) * String[] sorteeri(String[] sisend) * String[] kontrurl(String[] ur) * SortedSet sortsort(String[] sisend, SortedSet s) * String[] lingid*String sisu( * String absoluutseks(String, kontekst, String viide( * String[] absoluutseteks(String kontekst, String viited[]) * String URLsisu(String url) * String[] URLlingid(String url) * boolean kopeeri(String url, String failinimi) * boolean kopeeri(String url, String urlalus, String algkataloog) kokku 13 */ public static String refref(String link) { try{ if (link.indexOf("#")>=0){ if (link.startsWith("#")) return null; else{ StringTokenizer st = new StringTokenizer(link, "#"); return st.nextToken(); } } else return link; }catch (Exception v){ return link; } } public static URL urliks(String urlsone) throws MalformedURLException { try{ URL u=new URL(urlsone); return u; } catch (MalformedURLException pole_url) { return new URL(null); } } // eraldab urlist viite faili kohale public static String http_html(URL url){ String ref=url.getRef(); int liiast=ref.length(); String strurl=url.toString(); String vastus=strurl.substring(0, strurl.length() - liiast); return vastus; } // kontrollib sisestatud masiivi, korduvatale elementidele public static String[] sorteeri(String[] sisend) { if (sisend.length==(0)) { String[] vastus=null; return vastus; } // kui sisestati tyhi masiiv kinni // automaatselt sorteeruv hulk SortedSet sr = new TreeSet(); boolean korras; // sisestatakse elemendid hulka voib olla sobimatuid elemente for (int nr=0; nr margi jargi html koodi ta"hised tykid kaasa? StringTokenizer st1=new StringTokenizer(sisu, "<>", true); while(st1.hasMoreTokens()){ // kui html kood algab kood eraldada if((st1.nextToken().equals("<"))&st1.hasMoreTokens()){ //3 algus String juhtrida=st1.nextToken(); // eraldatakse uus tykeldaja. eraldajateks on =, tyhik, jutuma"rk, // reavahetus ja veel midagi \t StringTokenizer tag=new StringTokenizer(juhtrida, " \n\t=\""); while(tag.hasMoreTokens()){ // leitakse link href on tema ta"his if(tag.nextToken().toLowerCase().equals("href")& tag.hasMoreTokens()){ String link=tag.nextToken(); // lAheb masiivi if (!link.startsWith("#")) v.addElement(link); } } } // 3 oma } // koik tsyklid otsas String[] tulemus=new String[v.size()]; // vaartustatakse edaspidi valjastatav Stringimasiiv for(int i=0; i=0){ out.write(nr); nr=in.read(); // hulk++; // if((hulk%1000)==0)System.out.print(hulk/1000+" "); } in.close(); out.close(); // kui oli viga printStackTrace=veateade }catch(Exception e){korras=false; e.printStackTrace();} return korras; } // see meetod on samanimeline kui eelmine, kui // talle antakse sisendina teised argumendid public static boolean kopeeri(String url, String urlalus, String algkataloog){ // url antakse aadress kust soovitakse kopeeridaja kui, (ma arvan leitud link) // urlalus viitab mujale, siis lopeta ja teata ebaonnestumisest // kui urlalus ei alga url -ga if(!url.startsWith(urlalus))return false; // saadakse salvestatava faili nimi, // et nad oleksid erikataloogides kuidas tapselt? // failinimes on ette antud kataloog (algkataloog) failieraldaja // ja osasone (substring) urlalus /st , kus on / asendatud // universaalse? failieraldajaga. Kuhu saab http://www...? String failinimi=algkataloog+File.separator+url.substring(urlalus.length()). replace('/', File.separatorChar); // kui "failinimi" lopeb failieraldajaga, siis // anna failile nimeks index.html if(failinimi.endsWith(File.separator))failinimi+="index.html"; // saadakse kataloog, kuhu panna vottes osasone"failinimi" // algusest kuni viimase failieraldaja esinemiskohani String kataloog=failinimi.substring(0, failinimi.lastIndexOf(File.separator)); // tehakse vastav kataloog new File(kataloog).mkdirs(); // kopeerib eelmise meetodi abil sellesse kataloogi URLilt faili // tema originaalnimega return kopeeri(url, failinimi); } } // rohkem pole