前言:
眼前我们对“xmlwriter java”都比较着重,各位老铁们都想要知道一些“xmlwriter java”的相关文章。那么小编也在网络上搜集了一些有关“xmlwriter java””的相关资讯,希望咱们能喜欢,大家一起来学习一下吧!其实在笔者学习数据库之前,数据的可视化,曾经用的是io+正则表达式+字符串处理等等类似的操作,敢信?io操作很重要的!!!
1、IO概述
IO:Input(输入:将磁盘中的文件读到内存中) | Output(将内存中的数据写入磁盘);
文件:磁盘中数据的组织单位(一堆字节数据)
流(Stream):将磁盘中的静态字节数据变成流动中的字节数据;(字节的序列形成流)
文件进行读写的操作的所有接口与类放在:java.io包中;
2、File类
探测文件|文件夹的信息,再进一步对文件|文件夹进行操作;
File :获取文件的信息 | 创建|删除|重命名|移动 ,等操作
对目录: 提供删除|创建目录以及获取目录下所有文件和文件夹等
获取指定目录下所有的资源(文件或者文件夹 -- 递归获取)
public static void getFileAndDirectory(File path) { try{ File[] files = path.listFiles(); for(File f :files) { if(f.isDirectory()) { //打印目录 信息; System.out.println(f.getPath()); //再递归调用; getFileAndDirectory(f); }else { System.out.println(f.getPath()); } } }catch(Exception e){} }3、IO流
A、字节流【重要】
对文件进行读写操作最底层的,字节流可以对任意格式 的文件进行操作;
public abstract class InputStream :读操作的字节流父类(抽象类)public class FileInputStream extends InputStream ; InputStream -- FileInputStream
一次可以从流中读一个字节(read方法),如果返回-1,表示已到流的末尾(读完)
批量读取字节流数据:read(byte[] data) | read(byte[] data,int startindex,int len)
字节写入流
public abstract class OutputStreampublic class FileOutputStream extends OutputStream
write(byte[] datas)write(int data)write(byte[] datas,int startindex,int len)如何复制一个文件
//复制文件; public static void copy(String src,String dest) { InputStream in = null; OutputStream out = null; try { //1.创建一个读|写的流对象 in = new FileInputStream(src); out = new FileOutputStream(dest); //一次读多少 ? -- 4k |8k; byte[] buffer =new byte[1024*4]; int len = -1; while((len=in.read(buffer))!=-1) { //read方法的返回值是实际读的流长度 ; //将buffer中的数据写入到输出流中; out.write(buffer,0,len); } }catch (IOException e) { e.printStackTrace(); }finally { //一定要先关输出流,再关输入流; if(out!=null) { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } if(in!=null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } }
B、字符流[重要]
对磁盘文本文件的读写,用字节流可以实现,但不太方便;SUN设计专业的一组流(字符流),对文本格式的文件进行读写操作,相对字节流,要方便一些;为了提供效率,再用上SUN设计的缓冲流
通过字符流读 文本格式文件 (不能通过字符流来读图片文件,声音文件,视频文件等)
public abstract class Readerpublic class FileReader extends InputStreamReader extends Readerread()read(char[] data) | read(char[] data,int index,int len)
public abstract class Writerpublic class FileWriter extends OutputStreamWriter extends Writerwrite(int c) | writer(String str)writer(char[] chars) | writer(char[] chars,int index,int len)
C、字符缓冲流[重要]
字符缓冲流只能对字符流进行缓冲 ,字符缓冲流有2个:BufferedReader , BufferedWriter
public class BufferedReader extends Readerpublic class BufferedWriter extends Writer
D、标准输入流与标准备输出流[了解]
System.in : 获取键盘的数据;System.out:输出 --- 显示器|控制台
public final class System { public final static InputStream in = null; 键盘数据 public final static PrintStream out = null;}
E、转换流
将字节流 变成 字符流 (单向)
public class InputStreamReader extends Readerpublic class OutputStreamWriter extends Writer
F、对象流
对象流:如何将一个对象持久化(对象流的作用)
序列化:将对象转为流,用来存贮或者网络传输;
反序列化:将流中的数据转为对象
**注:**一个类创建的对象要能够被序列化,此类必须实现Serializable接口(是一个标识,没有任何设计)
public class ObjectOutputStream extends OutputStreampublic class ObjectInputStream extends InputStream
transient :如果某一属性不需要被持化,添加此标识即可private transient String nick;
G、数据流
数据流:将基本数据类型的数据及字符串持久化;
public class DataInputStream extends FilterInputStream extends InputStreampublic class DataOutputStream extends FilterOutoputStream extends OutputStream4、XML[重要]
XML:Extensible Markup Language (可扩展的标签语言),xml是一个纯文本格式的文件,相对文本文件,文档的内容一般用标签包裹(解析方便); XML在项目主要用来存放配制信息(每一个项目都有配制文件(xml文件))
XML文档作用 :存贮数据 (项目配制信息)
XML文档编写规范:第1行为文档声明(写法固定,一般不需手写,开发工具自动生成)xml有且只一个根元素(节点)标签(元素)需要用一对尖括号包裹起来; 标签一般是成对出现的,起始标签与结束标签只差“/"xml区分大小写的(一般用小写)元素可以有属性,多个属性需要用空格分开,属性值需要用双引号括起来(属性需要放到起始标签中)
XML文档一般3 三种写法
<?xml version="1.0" encoding="UTF-8"?><users> <user> <name>张二</name> <job>C程序员</job> <nick>高级程序员</nick> <email>zhanger@qq.com</email> </user></users>
<?xml version="1.0" encoding="UTF-8"?><users> <user name="张一" job="菜鸟" nick="初级程序员" email="zhang@qq.com" /> <user name="张二" job="老鸟" nick="高级程序员" email="zhanger@qq.com"/></users>
<?xml version="1.0" encoding="UTF-8"?><users> <user id="1"> <name>张一</name> <job>程序员</job> <nick>高级</nick> <email>zhang@qq.com</email> </user></users>
解析XML:在JDK中SUN设计了一组类与接口,用来解析XML文档(书中);SUN设计的解析XML的组件用起来不太方便,所以在实际应用,一般彩第三方解析组件(jar) ---- DOM4J
DOM4J核心组件 (org.dom4j | org.dom4j.io)SAXReader : 读取器Document:XML文档类Element : XML元素XMLWriter :写入数据类OutputFormat:格式化类DocumentHelper:Document助手类
默认,没添加任意约束的XML文档的编写是随意的(标签名任意,标签包含的标签设计也是随意的),这样带来的最大缺点:不好解析(不能写一段程序来解析任意结构的XML文件),文档结构混乱的,所以就需要一个结构确定的XML文件 ----- 给当前XML设计文档结构**(约束)** ------ 目前,文档结构的设计可以有2种方式
DTD:(Document Type Definition) 是一套定义语法规范; DTD可以写在文档内部(内部DTD),也可以写在文档外部(外部DTD),对外部DTD,只要在当前文档中引入进来即可
引入的语法:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE users SYSTEM "txl.dtd" >SYSTEM:表示私有 DTD ,当前DTD只服务于本项目(某一个XML文档)
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" ";>PUBLIC :表示公开的(所有项目都可以引入此约束),公开的DTD一般在框架中使用
了解DTD的语法(如何写一个DTD)
<!ELEMENT users (user*)> :ELEMENT元素设置 (根元素为users,根元素子元素名称为user,数量0个或多个)<!ELEMENT user(name,job?,email*) :user元素有3个子元素,name元素必须有,job 0个或者1个,email0个或者多个<!ELEMENT name (#PCDATA)> name元素的类型 #PCDATA:表示字符类型<!ELEMENT job (#PCDATA)> <!ELEMENT email (#PCDATA)>
XML Schema :
XML架构 ,相对DTD,Schema提供的设计更复杂,更全面. Schema约束本身也是一个xml文件(xsd)
<schema xmlns="; targetNamespace="; xmlns:tns="; elementFormDefault="qualified"></schema>xmlns="; : 设置本文件元素类型来自的名称空间(值不能修改)targetNamespace="; :为引入此schema的xml文件服务的elementFormDefault="qualified" :设置元素默认是否还名称空间
element :定义元素complexType:定义复合元素|复杂元素sequence:元素顺序出现minOccurs="0" :最小下线maxOccurs="unbounded" :最大上线......
<users xmlns="; xmlns:xsi="; xsi:schemaLocation=" txl.xsd "></users>xmlns="; 值与targetNamespace的值一致xmlns:xsi="; :告诉xml解析器,本xml使用一个xmlschema实例xsi:schemaLocation=" txl.xsd " :schema地址5、分层开发[重要]
正常项目中的类不会放到一个包中,主要管理不方便,所以在实际项目中,类总是基于功能分包管理 --- 分层设计思想(分3层)
表示层:展示数据(窗体|网页|控制台)
业务逻辑层:业务逻辑的判断(登录) ; 如果业务层没有业务的处理,业务层只是起到数据传递的作用(接力棒)
数据层:和文件或者数据库交互的(完成数据持久化或者从文件和数据库中读取数据)
在JAVA的项目设计中,分层是通过分包体现出来;
标签: #xmlwriter java