美文网首页
javaAPI(二)

javaAPI(二)

作者: revinu | 来源:发表于2018-04-08 10:20 被阅读0次

    XML文件

    1.XML:可扩展标记语言,独立于软件和硬件的信息传输工具,应用于web开发的多个方面,是数据的载体,常用于简化数据的存储和共享
    2.XML指令: 简称PI
           作用:用于指挥解析引擎如何解析XML文档的内容
             ---<?xml version="1.0" encoding="UTF-8"?>
    3.XML文档包含XML标签:XML标签由一对开始标签和结束标签组成
           元素:标签加上标签内的内容,元素中可以包含其它元素
    4.XML要求每一个元素必须有开始标签和关闭标签,开始标签<ss>、关闭标签</ss>
    5.XML要求必须有根元素;根元素不被其它元素所包含,并且根元素有且只有一个
    6.XML所有的元素都必须正确的嵌套,不能出现交错
    7.属性:XML元素可以在开始标签内包含属性;属性是用于提供关于元素额外信息的;属性通常提供不属于数据组成部分的信息;XML属性值必须加单引号或者双引号,多个属性之间用空格隔开
    8.XML对大小写是敏感的(区别于HTML)
    9.实体引用:
           实体可以是常用的短语、键盘字符、文件、数据库记录或任何包含数据的项;在XML中,有时实体内包含一些字符,如:&、<>、""等需要对其进行转义,否则会导致XML解析引擎无法正确解析
    10.XML的注释和HTML的注释相似<!-- *********-->
    11.XML 文档经常有一个对应的数据库,其中的字段会对应 XML 文档中的元素。有一个实用的经验,即使用数据库的命名规则来命名 XML 文档中的元素。
    
    image.png

    读取XML常用API汇总(通过SAXReader类读取)

    --getRootElement() : 获取XML文档的根元素
    --element(String name) :获取当前元素下的指定名字的子元素
    --elements() :获取当前元素下的所有子元素
    --Element 的getName()/getText() :获取当前元素的标签名/获取当前元素的标签内容
    --Attribute的getName()/getValue() :获取当前属性对象的属性名/属性值
    --attribute(int dex)/attribute(String name) :根据下标或者属性名获取属性对象
    

    从java中写入XML常用API

    DocumentHelper.createDocument() :创建一个document对象
    addElement(" ") :添加元素标签
    addText(" ") :添加元素内容
    addAttribute(" "," ") :添加属性
    

    File类

    1.该类位于java.io.File包中,用于表示文件或者目录,程序员可以通过File类在程序中操作硬盘上的文件和目录
    2.File类只用于表示文件(目录)的信息(名称、大小、路径等),不能对文件的内容进行访问
    3.构造方法: —— File("路径名")
        —— 通过将给定的路径名字符串转换成抽象路径名来创建一个新的File示例
                       ——File(File file,"文件名")
        ——在file对象的文件路径中创建一个新的文件
    4.相对路径:从当前位置(文件)出发到达目标文件(目录)所经历的路径
       绝对路径:从盘符起到目标文件所经历的路径
       抽象路径尽量使用相对路径,并且目录之间的分隔不要直接用"/""\",应该使用File.separator这个常量表示,以避免不同系统带来的差异性
    5.关于File类的常用API
       --file.exists():判断当前目录文件是否存在,如果存在返回true,反之返回false
      --isFile():判断当前File对象所表示的是否是文件,如果是返回true,反之返回false
      --length():表示当前File对象表示的文件所占字节量
      --creatNewFile():如果指定的文件不存在并成功创建,则返回true,如果文件已存在,返回false  注意:如果引用对象的路径不存在,将会编译错误
      --delete():删除File对象最近创建的一个文件(每次只删除一个),若当前对象目录含有子文件,将删除错误
      --mkdir():创建此抽象路径名指定的目录【创建一层目录】
      --mkdirs():用于创建抽象路径名指定的目录,包括所有必须但不存在的父目录【创建多层目录】
      --isDirectory():判断文件目录是否是文件夹
      --listFiles():返回值:当前File对象所有子项构成的数组;如果目录为空,数组为空;如果路径名不正确,返回null
      --listFiles(new FileFitler(){ })内部构造类
      --listFiles(new FilenameFilter(){ })
    

    RandomAccessFile类

    1.此类可以对文件随机访问操作,访问包括读写操作,该操作是基于指针的
    2.构造方法: 
         RandomAccessFile(File file,String mode)
         RandomAccessFile(String filename,String mode)
         --其中第一个参数表示需要访问的文件;第二个是访问模式
         --访问模式:  "r":表示对访问文件只读
                             "rw":表示对文件访问读写
         --当文件名找不到时,会自动创建文件
    3.write(int d);该方法会根据当前指针所在位置处写入一个字节,将参数d的"低8位"写入
    4.int read(): 该方法会从文件中读取一个byte(8位)填充到Int的低8位,高24位都默认为0,并返回;如果read()读取的结果返回是-1,表示读取到文件的末尾!每次读取之后会自动移动文件指针,准备下次读取
    5.write(byte[]d):该方法会根据当前指针所在位置处,连续写入给定数组的所有字节  
    6.write(byte[]d,int start,int length):从byte的第start个字节开始,一共写入length个字节
    7.read(byte[]):该方法会从指针处尝试最多读取给定数组的总长度的字节量,并从给定的字节数组第一个位置开始,将取到的字节顺序存放到数组,返回值为int类型
    8.long getFilePointer():该方法用于获取RandomAccessFile对象的指针位置
    9.seek(long position):将RandomAccessFile对象的指针移动到指定位置
    10.int skipBytes(int n):指针尝试跳过n个字节,返回实际跳过的字节数
    

    基本的IO操作

    输入流

    1.什么是输入
       --输入是一个从外界进入到程序的方向,通常我们需要读取外界数据时,使用输入,输入是用来读取数据的
    2.什么是输出:
       --输出是一个从程序发送到外界的方向;通常我们需要写出数据到外界时,使用输出,输出是用来写出数据的
    3.InputStream(抽象类): 是所有字节输入流的父类,它定义了基础的读取方法,常用的方法如下:
      --int read():读取一个字节返回一个“低八位”的int值,若返回值为-1,则表示EOF(结束)
      --重载方法 int read(byte[] b):读取一个字节数组,返回所有读取到的字节数量,若返回-1,则表示EOF
    

    输出流

    1.OutputStream是所有字节输出流的父类,其定义了一些基础的写出方法,常用的如下:
      --void write(int d):写出一个字节,写的是给定的int的“低8位”
      --void write(byte[] d):将给定的字节数组中的所有字节全部写出
    

    文件流

    文件输出流

    1.FileOutputStream:是OutputStream的实现类,是文件的字节输出流,可以创建该类的对象来调用相应的输出方法
    2.构造方法:
      --FileOutputStream(File file):创建一个向指定File对象表示的文件中写出数据的文件输出流
      --FileOutputStream(String filename):以字符串路径指向一个文件
         注意:若指定的文件已经包含内容,当使用FileOutputStream对该文件写出数据时,会将该文件中原有数据全部清空
    3.FileOutputStream追加模式构造方法:
      --FileOutputStream(File file,boolean append)
      --FileOutputStream(String filename,boolean append)
         这种FileOutputStream对象,当第二个参数为true时,在对文件写出数据时,不会将原有的内容删除,而是追加在之前的内容后面
    4.常用方法:write()/write(byte[] b)/write(byte[]b,int offset,int len)
    

    文件输入流

    FileInputStream:是文件的字节输入流,我们可以使用该流以字节为单位从文件中读取数据
    1.构造方法
      --FileInputStream(File file)
      --FileInputStream(String filename)
    2.常用方法:read()/read(byte[]b)/read(byte[]d,int offset,int len)
    

    缓冲流

    缓冲流的作用:提高程序读写的效率
    1.BufferedInputStream(输入缓冲流):
      --输入缓冲流内部也维护着一个缓冲区(字节数组),使用该流在读取字节时,该流会尽可能多的一次性读取若干字节并存入缓冲区,然后再逐一地将字节返回,直到缓冲区的数据全部读取完
      --构造方法:
    BufferedInputStream(InputStream is)
    BufferedInputStream(InputStream is,int size)
    2.BufferedOutputStream(输出缓冲流):
      --输出缓冲流内部维护着一个缓冲区,每当我们向该流写数据时,都会现将数据存入到缓冲区,当缓冲区满了的时候,缓冲流会将数据一次性全部写出
      --构造方法
    BuffereOutputStream(OutputStream os)
    BuffereOutputStream(OutputStream os,int size)
    3.常用方法:read()/write()等
    4.清出缓冲区的数据,可以用flush()或close()方法
    5.节点流和处理流
      --按照流是否与特定的地方(如磁盘、内存、设备等)相连,分为节点流和处理流两类
      --节点流(低级流):从/向一个特定的地方(节点)读写数据
      --处理流(高级流):对一个已经存在的流的连接和封装,通过所封装的流的功能调用实现数据读写
      --处理流构造方法总要传入其他流对象作为参数
      --一个流对象经过其它流的多次包装,成为流的链接
    

    对象流

    1.对象通常是存在于内存中的,有时候需要将对象保存在硬盘或其他存储上,这时我们就需要对象流来完成,这一过程又称为对象的序列化
    2.对象的序列化与反序列化
      --将对象转换成为一组字节序列,这个过程称为对象的序列化
      --一组字节序列转化为对象,这个过程称为反序列化
    3.ObjectOutputStream:对象序列化的输出流
      --void writeObject(Object obj):将一个对象序列化后写出
    4.ObjectInputStream:对象反序列化的输入流
      --Object readObject():从流指向的文件中读取字节并转换成相应的对象
    5.Serializable接口:实现该接口不需要重写任何方法,只是作为可序列化的一个标志
    6.transient:在对象序列化时,在成员属性前面用关键词transient修饰,该成员属性将不被序列化
    

    相关文章

      网友评论

          本文标题:javaAPI(二)

          本文链接:https://www.haomeiwen.com/subject/khtxhftx.html