hello,家人们,我们接着说XML,哈哈,顺便稍微复习一下JavaIO流
目录
一.🍖🍖Java复习IO流
1. 我们先准备一张照片,它是D盘下的:
2.然后把一张D盘中的照片复制到D盘中的JSP文件夹中:
上代码:
package com.zking.y1_06;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo {
public static void main(String[] args) throws IOException{
//创建一个文件,里面填图片的路径
File f=new File("D:\\a.jpg");
//有了这个文件后,创建一个输入流
FileInputStream in=new FileInputStream(f); //报错就抛出一个异常
//想要用原名复制过来的话,就String一个name
String name=f.getName();//获得原文件的名字
//再创建一个文件,将f复制到target(输出流)
File target=new File("D:\\JSP\\"+name);
FileOutputStream out=new FileOutputStream(target);
int i=0;
//给它一个小推车,加快速度
byte[] tmp=new byte[1024*99];
//循环,直到传完
while(in.read(tmp)!=-1) {
out.write(tmp);
i++;
}
//IO流需要手动关闭流
in.close();
out.flush();//有时间差,所以需要刷新一会,这样的话就把缓冲完的数据刷新成功再关闭
out.close();
System.out.println("hahaha" + i);
}
}
运行结果为:
而这时,a.jpg这个照片已经复制到我们的JSP文件夹中
二.🍉🍉Java中配置文件的三种配置位置及读取方式
- 同包(拿到同包下的文件)
类名.class.getResourceAsStream("db.properties");
- 根路径(拿到根目录下的文件)
类名.class.getResourceAsStream("/db.properties");
- WIN-INF安全路径(拿到WIN-INF安全路径)
context.getResourceAsStream("/WEB-INF/db.properties");
//主文件(通过自己的类点class,然后括号里要加/,不然就是说要和原文件放入同一个目录中)
InputStream in = XmlReader.class.getResourceAsStream("/config.xml");
三.🍭🍭dom4j的使用
//dom4j的使用
//1.selectNodes 查看某一个节点(多个相同的元素) (每个节点就是每个元素)
//2.selectSingleNode 查看单个节点(不需要遍历了)
//3.attributeValue 属性
//4.getText 获取文本值
四.🍓🍓xpath的使用
//xpath的使用
//xpath有点像sql语句
// 1.'/'是定义路径的
// 2.'@'是定义属性的
五.🥤🥤XML解析(举例)
在创建之前需要导jar包
然后创建一个Source Folder,取名为resources
然后在里面新建一个xml文件,叫config.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
<action path="/studentAction"
type="org.lisen.mvc.action.StudentAction">
<forward name="students" path="/students/studentList.jsp"
redirect="false" />
</action>
<action path="/studentAction02"
type="org.lisen.mvc.action.StudentAction">
<forward name="students02" path="/students/studentList.jsp"
redirect="false" />
</action>
</config>
然后再正常的新建一个class类
package com.zking.y1_06;
import java.io.InputStream;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class XmlReader {
public static void main(String[] args) throws Exception {
//主文件(通过自己的类点class,然后括号里要加/,不然就是说要和原文件放入同一个目录中)
InputStream in = XmlReader.class.getResourceAsStream("/config.xml");
//xml中有一个帮助类,老各斯缺,哈哈,不懂的就去百度查 dom4j
SAXReader reader=new SAXReader();
Document doc = reader.read(in);//报错需要抛出异常
Element rootElement = doc.getRootElement();//首先获取根元素;
//dom4j常用方法:selectNodes
List<Element> actions = rootElement.selectNodes("action");//获得config.xml中的action元素
//遍历所有ations,在action元素中寻找path属性和type属性
for (Element e : actions) {
String path=e.attributeValue("path");
String type=e.attributeValue("type");
System.out.println("action path:"+path);
System.out.println("action type:"+type);
//forward这个元素不止一个,所以需要一个集合装起来(如果是"/forward"就是表示从根目录开始)
List<Element> forwards = e.selectNodes("forward");
//然后在集合中寻找name属性和path属性,还有一个redirect属性
for (Element f : forwards) {
String name=f.attributeValue("name");
String fpath = f.attributeValue("path");
String redirect = f.attributeValue("redirect");//今天只是读取,所以不需要使用布尔
System.out.println("forward name:"+name);
System.out.println("forward path:"+fpath);
System.out.println("forward redirect:"+redirect);
}
}
//dom4j的使用
//1.selectNodes 查看某一个节点(多个相同的元素) (每个节点就是每个元素)
//2.selectSingleNode 查看单个节点(不需要遍历了)
//3.attributeValue 属性
//4.getText 获取文本值
//xpath的使用
//xpath有点像sql语句
// 1.'/'是定义路径的
// 2.'@'是定义属性的
}
}
结果:(可以看到已经获取到了上面所提供的XML文件中的相关元素和节点了)
今天的代码就到这里啦,下期见
今天也要记得微笑呀.