数据解析

XML数据解析

Pull 解析:

XmlPullParserFactory factory=XmlPullParserFactory.newInstance();
XmlPullParser parser=factory.newPullParser();
FileInputStream fis=new FileInputStream("user.xml","utf-8");
parser.setInput(fis,"utf-8");
int event=parser.getEventType();
while(event!=XmlPullParser.END_DOCUMENT){//判断是否到达文件末尾
    switch(event){
        case XmlPullParser.START_DOCUMENT://判断是否是文件开始标签
            list=new ArrayList<Person>();
            break;
        case XmlPullParser.START_TAG:
            String tagName=parser.getName(); //获取子标签名字
            if("person".equals(tagName)){
                person=new Person();
                int count=parser.getAttributeCount();//获取子标签名下的属性个数
                for(int i=0;i<count;i++){
                    //获取属性名字
                    String attrName=parser.getAttributeName(i);
                    //获取属性值
                    String attrValue=parser.getAttributeValue(i);
                }
            }
            else if("name".equals(tagName)){
                worker.setName(parser.nextText());
            }
            break;
        case XmlPullParser.END_TAG:
            if("person".equals(parser.getName())){
                list.add(person);
                person=null;
            }
            break;
    }
    event=parser.next();
}

SAX解析:

SAXParserFactory factory=SAXParserFactory.newInstance();
SAXParser parser=factory.newSAXParser();
File file=new File("user.xml","utf-8");
MyHandler handler=new MyHandler();

class MyHandler extends DefaultHandler{
    public void startDocument(){//文件开始
        list=new ArrayList<Person>();
    }
    public void startElement(String uri,String localName,String qName,Atrributes attributes){
        tagName=qName;
        if("person".equals(tagName)){
            person=new Person();
            if(attributes!=null){//属性
                for(int i=0;i<attributes.getLength();i++){
//得到属性名
String attrName=attributes.getValue(i);                 
                }               
            }
        }
    }
    public void characters(char[] ch,int start,int length){
        String data=new String(ce,start,length);
    }
    public void endElement(String url,String localName,String qName){//结束标签
        tagName="";
        if("person".equals(qName)){
            list.add(person);
        }
    }
    public void endDocument(){}  //文档结束标签
}
//解析数据
parser.parse(file,hander);

GSON: 序列化的Bean

生成Json字符串:
    Gson gson=new Gson();
    String jsonStr=Gson.toJson(obj);
        obj可以是:
            单个对象
                Person
            对象的集合
                list<Person>
            字符串的集合
                list<String>
            Map集合的集合
                list<Map<String,Object>>
解析Json字符串:
    结果是单个对象
        Person person=new Person();
        Gson gson=new Gson();
        person=gson.fromJson(jsonStr,Person.class);
    结果是list集合:
        List<T> list=null;
        Gson gson=new Gson();
        list=gson.fromJson(jsonStr,new TypeToken<List<T>>(){}.getType());  //T可以是String Person
        结果是Map的集合:
            List<Map<String,Object>> listMap=null;
            Gson gson=new Gson();
            listMap=gson.fromJson(jsonStr,new TypeToken<List<Map<String,Object>>>(){}.getType());

FastJson:

装换成Json形式的数据:
    JSON.toJSONString(obj); //obj可以是单个对象,对象的集合,字符串的集合,Map对象的集合
对Json形式的数据进行解析:
    1. 单个对象
        Person person=JSON.parseObject(jsonStr,Person.class);
    2. 对象的集合
        List<Person> list=JSON.parseArray(jsonStr,Person.class);
    3. 字符串的集合
        List<String> list=JSON.parseArray(jsonStr,String.class);
    4. Map对象的集合
        List<Map<String,Object>> listMap=JSON.parseObject(jsonStr,new TypeRefrence<List<Map<String,Object>>>(){});

字节流

InputStream:字节输入流
    FileInputStream fis=new FileInputStream("temp.txt");
    byte[] arr=new byte[fis.available()]; //fis.available() 获取文件的大小
    int num=fis.read(arr);
    System.out.println(arr,0,num);
    fis.close();
    //和键盘绑定再一起的字节输入流对象
    InputStream is=System.in;
    int num=is.read();
OutputStream:字节输出流的父类
    FileOutputStream fos=new FileOutputStream("temp.txt");
    fos.write("....".getBytes());
    fos.close();
    //指定编码:FileOutputStream("temp.txt","utf-8");

编码与解码:
    编码:
        byte[] getBytes(); //编码  以指定字符集将String编码为byte
        byte[] arr=ss.getBytes();
        byte[] getBytes(Charset charset);
        byte[] arr=ss.getBytes("GBK");

文件:

创建文件的三种形式:
    1. File file=new File("e:\\lzl\\Demo1.java");
    2. File file=new File("e:\\lzl","Demo.java");
    3. File parent=new File("e:\\lzl");
        File file=new File(parent,"Demo1.java");
文件常见操作:
    file.exists();  //判断文件是否存在
    file.createNewFile();  //创建文件
    file.madir();  //创建文件夹
    file.mkdirs();  //创建多级目录
    file.getName();  //得到文件名
    file.getPath();  //得到路径
    file.getParent();  //没有上级目录,返回null

线程池

只有一个线程的线程池对象
ExecutorService es=Executors.newSingleThreadExecutor();
固定个数线程的线程池对象 线程超过了固定的个数,则等待
ExecutorService es=Executors.newFixedThreadPool(2);
缓冲的线程池对象 灵活多变
ExecutorService es=Executor.newCachedThreadPool(3);
创建一个定长线程池,支持定时及周期性任务执行
ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);  
scheduledThreadPool.schedule(new Runnable() {  
       public void run() {  
            System.out.println("delay 3 seconds");  
   }  
}, 3, TimeUnit.SECONDS); 
//让线程池中的线程执行任务
es.executor(thread);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值