DatagramSocket DatagramPacket;通过URL访问网络资源保存在本地;XML DOM解析 SAX解析 JSON解析

这里写图片描述

DatagramSocket

DatagramPacket

package com.Inet.android;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Scanner;

public class Mysend {

    public static void main(String[] args) {
        try {

            DatagramSocket send=new DatagramSocket();
            DatagramSocket receiveToSend=new DatagramSocket(8088);
            while(true){
            //发送            
            Scanner input=new Scanner(System.in);
            String s=input.next();
            byte[]array=s.getBytes();
            //构造数据报包,用来将长度为 length 偏移量为 offset 的包发送到指定主机上的指定端口号。
            DatagramPacket packet =new DatagramPacket(array, 0, array.length, InetAddress.getByName("192.168.0.64"), 8080);
            System.out.println("");
            send.send(packet);


            //接受
            //创建数据报套接字并将其绑定到本地主机上的指定端口

            byte[]array1=new byte[1024];
            DatagramPacket packet1=new DatagramPacket(array1,  1024);//构造 DatagramPacket,用来接收长度为 length 的数据包
            receiveToSend.receive(packet1);//等待接受
            byte[]data=packet1.getData();
            System.out.println("小红:"+new String(data));

            }


        } catch (SocketException e) {

            e.printStackTrace();
        } catch (UnknownHostException e) {

            e.printStackTrace();
        } catch (IOException e) {

            e.printStackTrace();
        }


    }

}
------------------------------------------------------------
try {
            DatagramSocket receive = new DatagramSocket(8080);
            DatagramSocket receiveToSend = new DatagramSocket();
            while (true) {
                // 此段为接受数据
                // 创建数据报套接字并将其绑定到本地主机上的指定端口

                byte[] array = new byte[1024];
                DatagramPacket packet = new DatagramPacket(array, 1024);// 构造
                                                                        // DatagramPacket,用来接收长度为
                                                                        // length
                                                                        // 的数据包
                receive.receive(packet);// 等待接受
                byte[] data = packet.getData();
                System.out.println("小明:" + new String(data));

                // 此段为发送数据
                Scanner input = new Scanner(System.in);
                String s = input.next();
                byte[] array1 = s.getBytes();
                // 构造数据报包,用来将长度为 length 偏移量为 offset 的包发送到指定主机上的指定端口号。
                DatagramPacket packet1 = new DatagramPacket(array1, 0, array1.length,
                        InetAddress.getByName("192.168.0.64"), 8088);
                System.out.println("");
                receiveToSend.send(packet1);

            }
        } catch (SocketException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

通过URL访问网络资源保存在本地

1保存网页

try {
            URL url=new URL("http://www.baidu.com");
            InputStream is=url.openStream();
            InputStreamReader isr= new InputStreamReader(is);
            BufferedReader br=new BufferedReader(isr);
            String line=br.readLine();
            while (line!=null){
                line=br.readLine();
                System.out.println(line);
            }br.close();
            is.close();
            isr.close();


        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

保存图片

try {
            URL url2=new URL("http://pic23.nipic.com/20120909/10911977_203253484196_2.jpg");
            File fileimg=new File("f://11.jpg");
            if (!fileimg.exists()){
                fileimg.createNewFile();                
            }
            OutputStream os=new FileOutputStream(fileimg);
            //URL Connection connect=url.open 
            InputStream is=url2.openStream();//把url2的图片给is输入流(打开图片用openStream)
            byte[] array=new byte[1024];//新建数组存放图片  输入流is
            int i =is.read(array);//read方法把is 存入array,,存到结尾返回值-1
            while(i!=-1){
                os.write(array,0,i);
                i=is.read(array);

            }
            os.flush();
            os.close();
            is.close();
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

XML DOM解析

一般用UTF-8不要用RGB和
DOM解析XML

1创建解析器工厂对象
2有解析器工厂对象创建解析器对象
3由解析器对象对制定XML文件进行解析,构建相应DOM树,创建Document对象
4以Document对象为起点对DOM树的节点惊醒增删改查操作

package com.DOMTest.android;

import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class DOMTest {

    public static void main(String[] args) {
        //创建DOM解析器的工厂
        DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance();
        try {
            DocumentBuilder builder=factory.newDocumentBuilder();//使用解析器工厂创建解析器
            Document document=builder.parse("d:/11.txt");//使用解析器解析文档生成树的document

            NodeList list=document.getElementsByTagName("Weather");//得到文档中的所有Weather标签
            Node node =list.item(0);//得到第一个Weather
            Node child=node.getFirstChild();//得到Weather标签的第一个子标签<city>
            Node next=child.getNextSibling();//得到city的下一个标签
            while(next!=null){               //判断有没有走到最后一个标签
                if(next.getNodeType()==Node.ELEMENT_NODE){//判断节点类型是ELEMENT NODE
                    Node content =next.getFirstChild(); //得到第一个子节点不能为空
                    if(content!=null){
                        System.out.println(next.getFirstChild().getNodeValue().trim());//String的trim方法去掉首位空格
                    }
                }
                next=next.getNextSibling();
            }

        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


    }



}

SAX解析

package com.SAX.android;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class MySAXHander extends DefaultHandler{

    boolean isArrive=new String().equals("xcz");
    @Override
    public void characters(char[] ch, int start, int length) throws SAXException {

        super.characters(ch, start, length);
        if (isArrive){
            System.out.println("查找到"+new String());
        }
    }

    @Override
    public void endDocument() throws SAXException {

        super.endDocument();

    }

    @Override
    public void endElement(String uri, String localName, String qName) throws SAXException {

        super.endElement(uri, localName, qName);
        isArrive=false;//标签结束时
    }

    @Override
    public void startDocument() throws SAXException {

        super.startDocument();
    }

    @Override
    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {

        super.startElement(uri, localName, qName, attributes);
        isArrive=qName.equals("xcz");
        System.out.println(localName+"标签开始"+qName);
    }



}
--------------------------------------------------
package com.SAX.android;

import java.io.File;
import java.io.IOException;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.SAXException;

public class Test {

    public static void main(String[] args) {
        //从类名称中获取新的 SAXParserFactory 实例。
        SAXParserFactory factory=SAXParserFactory.newInstance();
        try {
            SAXParser parser=factory.newSAXParser();
            MySAXHander hander=new MySAXHander();
            parser.parse(new File("d:\\11.txt"), hander);
        } catch (ParserConfigurationException e) {

            e.printStackTrace();
        } catch (SAXException e) {

            e.printStackTrace();
        } catch (IOException e) {

            e.printStackTrace();
        }


    }

}

JSON解析

package com.JSON.android;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class JSONTest {

    public static void main(String[] args) {

        String json = creatJSON();
        JSONObject obj = JSONObject.fromObject(json);
        System.out.println(obj.getString("city"));
        JSONObject today = obj.getJSONObject("today");
        JSONArray array = today.getJSONArray("index");
        for (int i = 0; i < array.size(); i++) {
            JSONObject obj1 = array.getJSONObject(1);
            System.out.println(obj1.getString("name"));
        }
    }

    private static String creatJSON() {

        JSONObject obj = new JSONObject();
        obj.put("city", "北京");
        obj.put("cityid", "12323");
        JSONObject today = new JSONObject();
        today.put("data", "2015-8-3");
        today.put("week", "星期一");
        JSONArray array = new JSONArray();
        JSONObject index1 = new JSONObject();
        index1.put("name", "感冒");
        JSONObject index2 = new JSONObject();
        index2.put("name", "防晒");
        JSONObject index3 = new JSONObject();
        index3.put("name", "炎热");
        array.add(index1);
        array.add(index2);
        array.add(index3);
        today.put("index", array);
        obj.put("today", today);
        System.out.println(obj.toString());
        return obj.toString();

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值