javaAPI(二)

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修饰,该成员属性将不被序列化
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,104评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,816评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,697评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,836评论 1 298
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,851评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,441评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,992评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,899评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,457评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,529评论 3 341
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,664评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,346评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,025评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,511评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,611评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,081评论 3 377
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,675评论 2 359

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,704评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,664评论 18 399
  • 在书架上找到一本《这本书能让你睡得好》,作者是肖恩·史蒂文森,你要是经常听苹果的播客,特别是健康类的,应该听过Th...
    柳相同阅读 1,122评论 0 0
  • 面向Aspect的软件开发的好处网上一搜一大把,本文旨在以在Android中使用注解来完成Aspect的非侵入式编...
    a1c39d1714f9阅读 1,230评论 1 51
  • 有梦的曾经, 向往天堂。 殊不知, 已寻见, 枝头满霜。 独自零落, 飘洒既尽。 忘记的情谊, 感怀...
    一字马平川阅读 205评论 0 1