javaAPI(二)
2018-04-08 本文已影响0人
revinu
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修饰,该成员属性将不被序列化