长文慎点,Java学习笔记(三)

这只是一篇我自己学习java的流水账笔记,包含了以下内容,全是基础代码示例,希望对正在学习java的小伙伴有帮助

  • java线程:Thread pool
  • java GUI编程:Graphical User Interface programming
  • java简单爬虫:Web Email Spider & Magnet Spider

Thread pool

Extends class Thread for a thread

Extends class Thread for a thread or implements interface Runnable

import java.io.*;
import java.security.*;
import javax.xml.bind.*;
public class ExtendsThread{
    public static void main(String[] args){
        for(String filename : args){
            DigestThread dt = 
                    new DigestThread(filename);
            Thread t = new Thread(dt);
            t.start();
        }
    }
}
 
class DigestThread extends Thread{
    private String filename;
     
    DigestThread(String filename){
        this.filename = filename;
    }
     
    public void run(){
        try{
            FileInputStream fis = 
                    new FileInputStream(filename);
            MessageDigest sha = 
                    MessageDigest.getInstance("SHA-256");
            DigestInputStream dis = 
                    new DigestInputStream(fis,sha);
            while(dis.read() != -1);
            dis.close();
            byte[] digest = sha.digest();
            for(int i=0;i<digest.length;i++){
System.out.println(digest[i]);             
            }
 
            StringBuilder result = 
                    new StringBuilder(filename);
System.out.println(result);
            result.append(":");
System.out.println(result);
            result.append  
            (DatatypeConverter.printHexBinary(digest));
            System.out.println(result);
        }catch(IOException | NoSuchAlgorithmException  e){
             
        }
         
    }
     
}


Call back functions for a thread including static call back and instance call back

import java.io.*;
import java.security.*;
import javax.xml.bind.*;
public class CallbackDigestUserInterface{
    public static void main(String[] args){
        for(String filename : args){
            CallbackDigest cb = 
                    new CallbackDigest(filename);
            Thread t = new Thread(cb);
            t.start();
        }
         
    }
     
    public static void receiveDigest
    (byte[] digest,String name){
        StringBuilder result = 
                new StringBuilder(name);
        result.append(":");
        result.append
        (DatatypeConverter.printHexBinary());
        System.out.println(result);
    }
}
 
class CallbackDigest implements Runnable{
    private String filename;
     
    CallbackDigest(String filename){
        this.filename = filename;
    }
     
    public void run(){
        try {
            FileInputStream fis =
                    new FileInputStream(filename);
            MessageDigest sha = 
                    MessageDigest.getInstance("SHA-256");
            DigestInputStream dt = 
                    new DigestInputStream(fis,sha);
            while(dt.read != -1);
            dt.close();
            byte[] digest = sha.digest();
            CallbackDigestUserInterface.receiveDigest
            (digest,filename);
        }catch(IOException | NoSuchAlgorithmException e){
            System.err.printlln(e);
        }
    }
}

Instance call back

import java.io.*;
import java.security.*;
import javax.xml.bind.*;
public class InstanceCallbackDigestUserInterface{
    private String filename;
    private byte[] digest;
     
    InstanceCallbackDigestUserInterface(String filename){
        this.filename = filename;
    }
     
    public static void main(String[] args){
        for(String filename : args){
            InstanceCallbackDigestUserInterface d =
                new InstanceCallbackDigestUserInterface(filename);
            d.calculateDigest();
        }
    }
     
    public void calculateDigest(){
        InstanceCallbackDigest icd = 
                new InstanceCallbackDigest(filename,this);
        Thread t = new Thread(icd);
        t.start();
    }
     
    void receiveDigest(byte[] digest){
        this.digest = digest;
        System.out.println(this);
    }
     
    public String toString(){
        String result = filename + ":";
        if(digest != null){
            result += DatatypeConverter.printHexBinary(digest);
        }else{
            result += "digest not available!";
        }
        return result;
    }
     
     
}
 
class InstanceCallbackDigest implements Runnable{
    private String filename;
    private InstanceCallbackDigestUserInterface callback;
     
    InstanceCallbackDigest(String filename,
    InstanceCallbackDigestUserInterface callback){
        this.filename = filename;
        this.callback = callback;
    }
     
    public void run(){
        try(FileInputStream fis = 
        new FileInputStream(filename);
        ){
            MessageDigest sha = 
                    MessageDigest.getInstance("SHA-256");
            DigestInputStream dis = 
                    new DigestInputStream(fis,sha);
            while(dis.read() != -1);
            dis.close();
            byte[] digest = sha.digest();
            callback.receiveDigest(digest);
        }catch(IOException | NoSuchAlgorithmException e){
            System.err.println(e);
        }
    }
}

A interesting instance

interface DoWork{
    void doHomeWork(String homework,String anwser);
}
public class StudentCallback implements DoWork{
     
    public void doHomeWork(String homework,String anwser){
        System.out.println
        (homework+" the anwser is "+anwser+" thread线程");
    }
     
    public void goHome(){
        System.out.println
        ("I go home:主线程,不等thread线程出结果,无阻塞");
    }
     
    public void ask(String homework,RoomMate roommate){
        new Thread(new Runnable(){
            public void run(){
                roommate.getAnwser
                (homework,StudentCallback.this);
            }
        }).start();
         
        goHome();
    }
     
    public static void main(String[] args){
        StudentCallback student = new StudentCallback();
        String homework = "1+1=?";
        student.ask(homework,new RoomMate());
    }
}
 
class RoomMate{
    public void getAnwser(String homework,DoWork dowork){
        try{
            Thread.sleep(3000);
        }catch(InterruptedException e){
            System.err.println(e);
        }
        if(homework.equals("1+1=?")){
            String anwser = "2";
            dowork.doHomeWork(homework,anwser);
        }else{
            System.out.println("I do not know");
        }
         
    }
}

Max finder

import java.util.concurrent.*;
//import java.util.concurrent.Callable;
public class MultithreadedMaxFinder{
    public static void main(String[] args){
        /*
        System.out.println(Integer.MIN_VALUE);
        int[] i = {1,2,3,4,5};
        FindMaxTask m = new FindMaxTask(i,0,5);
        System.out.println(m.call());*/
        int[] data = new int[101];
        for(int i=0; i<100; i++){
            data[i] = i;
        }
         
        try{
            System.out.println
            (max(data));
        }catch(Exception e){}
         
         
         
    }
     
    public static int max(int[] data) throws InterruptedException,
    ExecutionException{
         
        if(data.length == 1){
            return data[0];
        }else if(data.length == 0){
            System.err.println();
        }
         
        FindMaxTask task1 = 
                new FindMaxTask(data,0,data.length/2);
        FindMaxTask task2 = 
                new FindMaxTask(data,data.length/2,data.length);
                 
        ExecutorService service = 
                Executors.newFixedThreadPool(2);
        Future<Integer> future1 = service.submit(task1);
        Future<Integer> future2 = service.submit(task2);
         
        return Math.max(future1.get(),future2.get());
             
    }
}
 
class FindMaxTask implements Callable<Integer>{
    private int[] data;
    private int start;
    private int end;
     
    FindMaxTask(int[] data,int start,int end){
        this.data = data;
        this.start = start;
        this.end = end;
    }
     
    public Integer call(){
        int max = Integer.MIN_VALUE;
        for(int i=start; i<end; i++){
            if(data[i] > max) max = data[i];
        }
        return max;
    }
}

Gzip files

import java.io.*;
import java.util.zip.*;
import java.util.concurrent.*;
public class GzipAllfiles{
     
    public final static int THREAD_COUNT = 4;
     
    public static void main(String[] args){
         
        ExecutorService pool = 
                Executors.newFixedThreadPool(THREAD_COUNT);
         
        for(String filename : args){
            File f = new File(filename);
            if(f.exists()){
                if(f.isDirectory()){
                    File[] files = f.listFiles();
                    for(int i=0; i<files.length; i++){
                        if(!files[i].isDirectory()){
                            Runnable task = 
                                    new GzipRunnable(files[i]);
                            pool.submit(task);
                        }
                    }
                }else{
                    Runnable task = 
                            new GzipRunnable(f);
                    pool.submit(task);
                }
            }
        }
        pool.shutdown();
    }
}
 
class GzipRunnable implements Runnable{
     
    private final File input;
     
    public GzipRunnable(File input){
        this.input = input;
    }
     
    public void run(){
        if(!input.getName().endsWith(".gz")){
            File output = new File
                (input.getParent(),input.getName() + ".gz");
            if(!output.exists()){
                try(InputStream in = 
                    new BufferedInputStream(
                    new FileInputStream(input));
                    OutputStream out = 
                    new BufferedOutputStream(
                    new GZIPOutputStream(
                    new FileOutputStream(output)))){
                        int b;
                        while( (b = in.read()) != -1 ){
                            out.write(b);
                        }
                        out.flush();
                }catch(IOException e){
                    System.out.println(e);
                }
            }
        }
    }
}

A simple instance

import java.util.concurrent.*;
import java.util.*;
public class ThreadPool{
    public static void main(String[] args){
        ExecutorService pool = 
                Executors.newFixedThreadPool(4);
         
        List<Future<String>> futures = 
                new ArrayList<Future<String>>(10);
        for(int i=0; i<10; i++){
            futures.add
            (pool.submit(new ThreadIns()));   
        }
        for(Future<String> future : futures){
            try{
                String result = future.get();
                System.out.println(result);
            }catch(InterruptedException | ExecutionException e){
                 
            }
             
        }
        pool.shutdown();
    }
}
 
class ThreadIns implements Callable<String>{
     
    public String call(){
        return "Run";
    }
}

Graphical User Interface programming

Frame and Panel

import java.awt.*;
public class TestFrame2{
    public static void main(String[] args){
        frame f1 = new frame
        (100,100,100,100,Color.blue);
        frame f2 = new frame
        (200,100,100,100,Color.black);
        frame f3 = new frame
        (100,200,100,100,Color.yellow);
        frame f4 = new frame
        (200,200,100,100,Color.green);
    }
}
 
class frame extends Frame{
    static int id = 0;
    frame(int x,int y,int w,int h,Color c){
        super("Tittle"+(++id));
        setBounds(x,y,w,h);
        setBackground(c);
        setVisible(true);
    }
}
import java.awt.*;
public class TestFrame3{
    public static void main(String[] args){
        Frame f = new Frame("Test");
        Panel p = new Panel(null);
        f.setLayout(null);
        f.setBounds(50,100,300,300);
        f.setBackground(Color.blue);
        p.setBounds(50,50,200,200);
        p.setBackground(Color.yellow);
        f.add(p);
        f.setVisible(true);
    }
}
import java.awt.*;
public class TestFrame4{
    public static void main(String[] args){
        MyPanel p = new MyPanel
        ("test",800,30,400,400);
    }
}
 
class MyPanel extends Frame{
    private Panel p1,p2,p3,p4;
    public MyPanel(String n,int x,int y,int w,int h){
        super(n);
        setLayout(null);
        setBounds(x,y,w,h);
        p1 = new Panel(null);
        p2 = new Panel(null);
        p3 = new Panel(null);
        p4 = new Panel(null);
        p1.setBounds(0,0,w/2,h/2);
        p1.setBackground(Color.red);
        p2.setBounds(w/2,0,w/2,h/2);
        p2.setBackground(Color.blue);
        p3.setBounds(0,h/2,w/2,h/2);
        p3.setBackground(Color.yellow);
        p4.setBounds(w/2,h/2,w/2,h/2);
        p4.setBackground(Color.black);
        add(p1);add(p2);add(p3);add(p4);
        setVisible(true);
    }
}
import java.awt.*;
public class TestFrame5{
    public static void main(String[] args){
        MyFrame f = new MyFrame
        ("my panel",800,50,400,400);
    }
}
 
class MyFrame extends Frame{
    private Panel p1;
    public MyFrame(String n,int x,int y,int w, int h){
        super(n);
        setBounds(x,y,w,h);
        setBackground(Color.red);
        setLayout(null);
        p1 = new Panel(null);
        p1.setBounds(w/4,h/4,w/2,h/2);
        p1.setBackground(Color.yellow);
        add(p1);
        setVisible(true);
    }
}

Layout Manager

import java.awt.*;
public class TestFlowLayout{
    public static void main(String[] args){
        new Myframe().launchFrame();
    }
}
 
class Myframe extends Frame{
    public void launchFrame(){
        Button b1 = new Button("OK"); 
        Button b2 = new Button("Yes"); 
        Button b3 = new Button("cancle");
        setLayout(new FlowLayout(FlowLayout.LEFT));
        add(b1);
        add(b2);
        add(b3);
        setBounds(300,200,300,300);
        setVisible(true);
    }
}
import java.awt.*;
public class TestFlowLayout1{
    public static void main(String[] args){
        new Myframe().launchFrame();
    }
}
 
class Myframe extends Frame{
    public void launchFrame(){
        setBounds(100,100,300,300);
        FlowLayout layout = new FlowLayout
        (FlowLayout.CENTER,20,40);
        setLayout(layout);
        for(int i=0; i<7; i++){
            add(new Button("button"+(i+1)));
        }
        setVisible(true);
    }
}
import java.awt.*;
public class TestBorderLayout{
    public static void main(String[] args){
        new MyFrame().launchFrame
        ("Border Layout");
    }
}
 
class MyFrame extends Frame{
 
    public void launchFrame(String name){
        this.setTitle(name);
        Button b1 = new Button("N");
        Button b2 = new Button("S");
        Button b3 = new Button("W");
        Button b4 = new Button("E");
        Button b5 = new Button("C");
        add(b1,BorderLayout.NORTH);
        add(b2,BorderLayout.SOUTH);
        add(b3,BorderLayout.WEST);
        add(b4,BorderLayout.EAST);
        add(b5,BorderLayout.CENTER);
        setBounds(100,200,400,400);
        setVisible(true);
    }
}
import java.awt.*;
public class TestGridLayout{
    public static void main(String[] args){
        new MyFrame().launchFrame
        ("Grid Layout");
    }
}
 
class MyFrame extends Frame{
    public void launchFrame(String name){
        setTitle(name);
        for(int i=0; i<6; i++){
            add(new Button("button"+(i+1)));
        }
        setLayout(new GridLayout(3,2));
        pack();
        setVisible(true);
    }
}
import java.awt.*;
public class PracticeLayout{
    public static void main(String[] args){
        new MyFrame().launchFrame
        ("Practice Layout");
    }
}
 
class MyFrame extends Frame{
    public void launchFrame(String name){
        setTitle(name);
        setLayout(new GridLayout(2,1));
        Panel p1 = new Panel(new BorderLayout());
        Panel p11 = new Panel(new GridLayout(2,1));
        add(p1);
        Button b1 = new Button("b1");
        Button b2 = new Button("b2");
        p1.add(b1,BorderLayout.WEST);
        p1.add(b2,BorderLayout.EAST);
        Button b3 = new Button("b3");
        Button b4 = new Button("b4");
        p11.add(b3);
        p11.add(b4);
        p1.add(p11,BorderLayout.CENTER);
         
        Panel p2 = new Panel(new BorderLayout());
        add(p2);
        Panel p22 = new Panel(new GridLayout(2,2));
        Button b5 = new Button("b5");
        Button b6 = new Button("b6");
        p2.add(b5,BorderLayout.WEST);
        p2.add(b6,BorderLayout.EAST);
        p2.add(p22,BorderLayout.CENTER);
        Button b7 = new Button("b7");
        Button b8 = new Button("b8");
        Button b9 = new Button("b9");
        Button b10 = new Button("b10");
        p22.add(b7);
        p22.add(b8);
        p22.add(b9);
        p22.add(b10);
        setBounds(0,0,500,500);
        //pack();
        setVisible(true);
    }
}

Some event and inner class

import java.awt.*;
import java.awt.event.*;
public class TestActionListener{
    public static void main(String[] args){
        new MyFrame().launchFrame
        ("Action Event");
    }
}
 
class MyFrame extends Frame{
    void launchFrame(String name){
        setTitle(name);
        Button b = new Button("press me!");
        add(b);
        Monitor m = new Monitor();
        b.addActionListener(m);
        pack();
        setVisible(true);
    }
     
    class Monitor implements ActionListener{
        public void actionPerformed(ActionEvent e){
            System.out.println("A button has pressed!");
        }
    }
}
import java.awt.*;
import java.awt.event.*;
public class TestActionListener1{
    public static void main(String[] args){
        new MyFrame().launchFrame
        ("Action Event");
    }
}
 
class MyFrame extends Frame{
    void launchFrame(String name){
        setTitle(name);
        Button b = new Button("press me!");
        add(b);
        b.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                System.out.println("A button has pressed!");
            }
        });
        pack();
        setVisible(true);
    }
}
import java.awt.*;
import java.awt.event.*;
 
public class TestActionListener2{
    public static void main(String[] args){
        new MyFrame().launchFrame
        ("Test Action Listener");
    }
}
 
class MyFrame extends Frame{
    void launchFrame(String name){
        setTitle(name);
        Button b1 = new Button("start");
        Button b2 = new Button("stop");
 
        Monitor m = new Monitor();
        b1.addActionListener(m);
        b2.addActionListener(m);
        //b2.setActionCommand("game over");
        add(b1,BorderLayout.NORTH);
        add(b2,BorderLayout.SOUTH);
        pack();
        setVisible(true);
    }
     
    class Monitor implements ActionListener{
        public void actionPerformed(ActionEvent e){
            System.out.println
            ("info : " + e.getActionCommand());
        }
    }
}
import java.awt.*;
import java.awt.event.*;
 
public class TestActionListener3{
    public static void main(String[] args){
        new MyFrame().launchFrame
        ("Test Text Field");
    }
}
 
class MyFrame extends Frame{
    void launchFrame(String name){
        setTitle(name);
        TextField tf = new TextField();
        add(tf);
        Monitor m = new Monitor();
        tf.addActionListener(m);
        pack();
        setVisible(true);
    }
     
    class Monitor implements ActionListener{
        public void actionPerformed(ActionEvent e){
            TextField tf =(TextField)e.getSource();
            System.out.println
            (tf.getText());
            tf.setText(null);
        }
    }
}
import java.awt.*;
import java.awt.event.*;
 
public class TestActionListener4{
    public static void main(String[] args){
        new MyFrame().launchFrame
        ("Test Text Field");
    }
}
 
class MyFrame extends Frame{
    void launchFrame(String name){
        setTitle(name);
        TextField tf = new TextField();
        add(tf);
        tf.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                TextField tf =(TextField)e.getSource();
                System.out.println
                (tf.getText());
                tf.setText(null);
            }
        });
        pack();
        setVisible(true);
    }
}
import java.awt.*;
import java.awt.event.*;
 
public class TestActionListener5{
    public static void main(String[] args){
        new MyFrame().launchFrame
        ("Test Text Field");
    }
}
 
class MyFrame extends Frame{
    void launchFrame(String name){
        setTitle(name);
        setLayout(new FlowLayout());
        TextField tf1 = new TextField();
        Label label = new Label("+");
        TextField tf2 = new TextField();
        Button b = new Button("=");
        TextField tf3 = new TextField();
        add(tf1);
        add(label);
        add(tf2);
        add(b);
        add(tf3);
        b.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                int i1 = Integer.parseInt(tf1.getText());
                int i2 = Integer.parseInt(tf2.getText());
                tf3.setText(""+(i1+i2));
            }
        });
        pack();
        setVisible(true);
    }
}
import java.awt.*;
public class TestPaint{
    public static void main(String[] args){
        new MyFrame().launchFrame
        ("Test Paint");
    }
}
 
class MyFrame extends Frame{
    public void launchFrame(String name){
        setTitle(name);
        setBounds(100,200,200,200);
        setVisible(true);
    }
     
    public void paint(Graphics g){
        Color c = g.getColor();
        g.setColor(Color.red);
        g.fillOval(50,50,40,40);
        g.setColor(Color.yellow);
        g.fillRect(20,40,60,80);
        g.setColor(c);
    }
}
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class TestMouseEvent{
    public static void main(String[] args){
        new MyFrame().launchFrame
        ("Test Mouse Event");
    }
}
 
class MyFrame extends Frame{
    ArrayList<Point> points = null;
    public void launchFrame(String name){
        points = new ArrayList<Point>();
        setTitle(name);
        setBounds(100,200,400,400);
        setBackground(Color.blue);
        setVisible(true);
        addMouseListener(new Monitor());
    } 
     
    public void paint(Graphics g){
        g.setColor(Color.red);
        Iterator<Point> i = points.iterator();
        while(i.hasNext()){
            Point p = i.next();
            g.fillOval(p.x,p.y,10,10);
        }
    }
     
    public void addPoint(Point p){
        points.add(p);
    }
     
    class Monitor extends MouseAdapter{
        public void mousePressed(MouseEvent e){
            MyFrame f = (MyFrame)e.getSource();
            f.addPoint(new Point(e.getX(),e.getY()));
            f.repaint();
        }
    }
}
import java.awt.*;
import java.awt.event.*;
public class TestWindowEvent{
    public static void main(String[] args){
        new MyFrame().launchFrame
        ("Test Window Event");
    }
}
 
class MyFrame extends Frame{
    public void launchFrame(String name){
        setTitle(name);
        setLayout(new GridLayout(2,1));
        Panel p1 = new Panel(new BorderLayout());
        Button b1 = new Button("top");
        Button b2 = new Button("bottom");
        Panel p2 = new Panel(new BorderLayout());
        p1.add(b1,BorderLayout.CENTER);
        p2.add(b2,BorderLayout.CENTER);
        add(p1);
        add(p2);
        pack();
        setVisible(true);
        addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                System.exit(-1);
            }
        });
    }
}
import java.awt.*;
import java.awt.event.*;
public class TestWindowEvent1{
    public static void main(String[] args){
        new MyFrame().lauchFrame
        ("Test Window Event");
    }
}
 
class MyFrame extends Frame{
    public void lauchFrame(String name){
        setTitle(name);
        Button b = new Button("Start");
        TextField tf = new TextField();
        add(b,BorderLayout.NORTH);
        add(tf,BorderLayout.SOUTH);
        pack();
        setVisible(true);
        b.addActionListener(new ActionListener(){
            private int i;
            public void actionPerformed(ActionEvent e){
                tf.setText(e.getActionCommand()+ ++i);
            }
        });
        addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                System.exit(-1);
            }
        });
    }
}
import java.awt.*;
import java.awt.event.*;
public class TestKeyEvent{
    public static void main(String[] args){
        new MyFrame().launchFrame
        ("Test Key Event");
    }
}
 
class MyFrame extends Frame{
    public void launchFrame(String name){
        setTitle(name);
        Button b = new Button
        ("How many times you press any key");
        TextField t = new TextField();
        add(b,BorderLayout.NORTH);
        add(t,BorderLayout.SOUTH);
        b.addKeyListener(new KeyAdapter(){
            private int i;
            public void keyPressed(KeyEvent e){
                t.setText(""+(++i));
            }
        });
        addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                System.exit(-1);
            }
        });
        pack();
        setVisible(true);
    }
}

Web Email Spider & Magnet Spider

EmailSpider

Run instance : java EmailSpider http://tieba.baidu.com/p/2314539885 D:\test.html

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
public class EmailSpider {
     
    private static String emailR = 
            "\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+[A-Za-z]{2,14}";
    public static Pattern p = Pattern.compile(emailR);
 
    public static void main(String[] args) {
        String url = args[0];
        String pathname = args[1].replace(File.separatorChar,'/'); 
        WriteHtml(url,pathname);
        ReadEmail(pathname);
    }
     
    public static void WriteHtml(String url,String pathname){
        int c;
        try(Reader r = new InputStreamReader(
            new BufferedInputStream(
            new URL(url).openStream()));
                 
            Writer w = new OutputStreamWriter(
            new BufferedOutputStream(
            new FileOutputStream(
            new File(pathname))))
            ){
            while( (c = r.read()) != -1){
                //System.out.println(c);
                w.write(c);
                w.flush();
            }
             
        }catch(IOException e){
            //System.out.println("Connection error!");
            e.printStackTrace();
        }
    }
     
    public static void ReadEmail(String pathname){
        try(BufferedReader br = new BufferedReader(
            new InputStreamReader(
            new FileInputStream(new File(pathname))))
            ){
                String line = "";
                while( (line = br.readLine()) != null){
                    Matcher m = p.matcher(line);
                    while(m.find()){
                        System.out.println(m.group());
                    }
                }
                 
            }catch(IOException e){
                System.out.println("No such file!");
            }
        }
     
}

EmailSpiderModified

import java.io.*;
import java.util.regex.*;
import java.net.*;
public class EmailSpiderModified{
    private static String emailRegExp =
        "\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+[A-Za-z]{2,14}";
    private static Pattern p = Pattern.compile(emailRegExp);
    private static int counter;
     
    public static void main(String[] args){
         
        String url = args[0];
        emailFromRAM(url);
    }
     
    public static void emailFromRAM(String url){
        String line = null;
        try(BufferedReader br = new BufferedReader(
            new InputStreamReader(
            new URL(url).openStream()))
            ){
                while((line = br.readLine()) != null){
                     
                    //System.out.println(line);
                     
                    Matcher m =   p.matcher(line);
                    while(m.find()){
                        readEmail(m.group());
                        counter++;
                    }
                }
                System.out.println
                ( "本页面共计" + counter + "个Email!");
             
        }catch(IOException e){
            e.printStackTrace();
        }
    }
     
    public static void readEmail(String email){
        System.out.println(email);
    }
 
}

MagnetSpider


import java.io.*;
import java.util.regex.*;
import java.net.*;
public class MagnetSpider{
    private static String magnetRegExp =
        "magnet:\\?xt=urn:btih:[\\w]*";
    private static Pattern p = Pattern.compile(magnetRegExp);
    private static int counter;
     
    public static void main(String[] args){
         
        String url = args[0];
        emailFromRAM(url);
    }
     
    public static void emailFromRAM(String url){
        String line = null;
        try(BufferedReader br = new BufferedReader(
            new InputStreamReader(
            new URL(url).openStream()))
            ){
                while((line = br.readLine()) != null){
                     
                    //System.out.println(line);
                     
                    Matcher m =   p.matcher(line);
                    while(m.find()){
                        readEmail(m.group());
                        counter++;
                    }
                }
                System.out.println
                ( "本页面共计" + counter + "个磁链!");
             
        }catch(IOException e){
            e.printStackTrace();
        }
    }
     
    public static void readEmail(String email){
        System.out.println(email);
    }
 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码狂魔v

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值