当前位置: 首页> 房产> 政策 > Java进阶13讲__第11讲

Java进阶13讲__第11讲

时间:2025/7/15 20:23:33来源:https://blog.csdn.net/XiaomeiGuiSnJs/article/details/142017452 浏览次数:0次

配置文件

日志

1.  Properties属性文件

1.1  特点、作用

  1. 都只能是键值对
  2. 键不能重复
  3. 文件后缀一般是.properties结尾的

1.2  读取

package cn.hdc.oop10.properties;import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Properties;
import java.util.Set;public class t1 {public static void main(String[] args) throws Exception {//新建配置文件对象Properties properties = new Properties();System.out.println(properties);//读取数据properties.load(new FileReader("itDay01\\src\\Users.properties"));System.out.println(properties);//键取值System.out.println(properties.get("赵敏"));System.out.println(properties.get("张无忌"));//遍历全部的键和值Set<String> set = properties.stringPropertyNames();set.forEach(item -> {System.out.println(item + "=" + properties.get(item));});//Lambdaproperties.forEach((k, v) -> {System.out.println(k + "=" + v);});}
}

1.3  存储

package cn.hdc.oop10.properties;import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;public class t2 {public static void main(String[] args) throws Exception {//新建配置文件对象Properties properties = new Properties();properties.setProperty("jsz", "1233");properties.setProperty("wsn", "1235");properties.setProperty("wzn", "1234");properties.store(new FileWriter("itDay01\\src\\Users2.properties"), "I saved many users");}
}

1.4  总结

Properties的作用?具体如何使用?

可以加载属性文件中的数据到Properties对象中来

void load​(Reader reader)

public String getProperty(String key)   根据键获取值

可以存储Properties属性集的键值对数据到属性文件中去

void store​(Writer writer, String comments)

public Object setProperty(String key, String value)  设置键值

2.  XML属性文件

1.1  特点、作用

1.1.1  XML及特点 

1.1.2  语法规则

<?xml version="1.0" encoding="utf-8" ?>
<Users><user id="1"><name>赵无极</name><grade>&lt;80</grade></user><user id="2"><name>玄子</name><grade><![CDATA[海神阁阁主99]]></grade></user><user id="3"><name>王秋儿</name><grade>&gt;100</grade></user>
</Users>

XML的组成格式要求是什么样的?

文件后缀一般是是xml,文档声明必须是第一行

必须存在一个根标签,有且只能有一个

XML文件中可以定义注释信息:<!–- 注释内容 -->

标签必须成对出现,有开始,有结束标签: <name></name>

必须能够正确的嵌套

1.1.3  XML作用及应用 

1.2  读取

1.2.1  Dom4j

1.2.2  Document

 1.2.3  Element

package cn.hdc.oop10.xml;import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;import java.util.List;public class t2 {public static void main(String[] args) throws Exception {SAXReader reader = new SAXReader();Document doc = reader.read("itDay01\\b-2.xml");Element ele = doc.getRootElement();//ele方法//得到根节点元素名字String rootName = ele.getName();System.out.println(rootName);//得到当前元素下所有子元素List<Element> allElements = ele.elements();//得到user集合for (Element element : allElements) {System.out.println(element.getName());//通过属性名得到属性值String id = element.attributeValue("id");System.out.println(id);//得到当前元素下指定名字的子元素,如果有很多名字相同的返回第一个String name = element.element("name").getText();System.out.println(name);
//            List<Element> userList = element.elements();
//            for (Element user : userList) {
//                System.out.println(user);//user里面的每一个元素的集合
//            }}}
}

1.2.4  案例

b_2.xml

<?xml version="1.0" encoding="UTF-8" ?>
<users><user id="1"><name>张无忌</name><password>minmin</password><address>光明顶</address><gender>男</gender></user><user id="2"><name>敏敏</name><password>wuji</password><address>光明顶</address><gender>女</gender></user>
</users>

Java 

package cn.hdc.oop10.xml;import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;import java.util.ArrayList;
import java.util.List;public class t1 {public static void main(String[] args) throws Exception {ArrayList<User> userList = new ArrayList<>();SAXReader reader = new SAXReader();Document doc = reader.read("itDay01\\b-2.xml");Element ele = doc.getRootElement();//获取根标签下的所有子标签List<Element> list = ele.elements();//遍历根标签的集合for (Element element : list) {String name = element.element("name").getText();String password = element.element("password").getText();String address = element.element("address").getText();String gender = element.element("gender").getText();User user = new User(name, password, address, gender);userList.add(user);}System.out.println(userList);}
}class User {private String name;private String password;private String address;private String gender;@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", password='" + password + '\'' +", address='" + address + '\'' +", gender='" + gender + '\'' +'}';}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public User() {}public User(String name, String password, String address, String gender) {this.name = name;this.password = password;this.address = address;this.gender = gender;}
}

1.3  约束(了解)

1.3.1  DTD文档

1.3.2  Schema文档 

3.  日志

3.1  概念

3.1.1  日志技术 

3.1.2  日志技术的体系结构

3.2  快速入门

3.2.1  基本使用 

package cn.hdc.oop10.log;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class t1 {public static final Logger LOGGER = LoggerFactory.getLogger(t1.class);public static void main(String[] args) {
//        LOGGER.info();
//        LOGGER.debug();
//        LOGGER.warn();
//        LOGGER.error();LOGGER.info("开始执行div方法了...");div(1, 2);div(1, 0);}public static int div(int a, int b) {try {LOGGER.debug("方法执行了a={},b={}", a, b);return a / b;} catch (Exception e) {LOGGER.error("{}除{}出错了", a, b);e.printStackTrace();throw new RuntimeException();}}
}

3.2.2  日志级别

3.2.3  配置文件 

<?xml version="1.0" encoding="UTF-8"?>
<configuration><!--CONSOLE :表示当前的日志信息是可以输出到控制台的。--><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><!--输出流对象 默认 System.out 改为 System.err--><target>System.out</target><encoder><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level]  %c [%thread] : %msg%n</pattern></encoder></appender><!-- File是输出的方向通向文件的 --><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern><charset>utf-8</charset></encoder><!--日志输出路径--><file>F:/log/itheima-data.log</file><!--指定日志文件拆分和压缩规则--><rollingPolicyclass="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!--通过指定压缩文件名称,来确定分割文件方式--><fileNamePattern>F:/log/itheima-data-%i-%d{yyyy-MM-dd}-.log.gz</fileNamePattern><!--文件拆分大小--><maxFileSize>1MB</maxFileSize></rollingPolicy></appender><!--1、控制日志的输出情况:如,开启日志,取消日志--><root level="ALL"><appender-ref ref="CONSOLE"/><appender-ref ref="FILE" /></root>
</configuration>
关键字:Java进阶13讲__第11讲

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: