特殊文件java

server/2025/1/15 21:50:44/

properties 属性文件

  1. 里边存放 键值对
  2. 键不能重复
  3. 文件后缀一般是 properties 结尾的

使用properties读取属性文件
public class PropertiesTest1 {public static void main(String[] args) throws Exception {//1.创建一个properties对象Properties properties = new Properties();System.out.println(properties);//2.开始加载属性文件中的键值对到properties中去properties.load(new FileReader("properties-xml-log-app\\src\\users.properties"));System.out.println(properties);//3.根据键取值System.out.println(properties.getProperty("张琳"));//4.遍历全部的键和值Set<String> keys = properties.stringPropertyNames();for (String key : keys) {System.out.println(key+"-->"+properties.getProperty(key));}properties.forEach((k,v)-> System.out.println(k+"-->"+v));}
}
使用properties把键值对数据写出到属性文件中去
public class PropertiesTest2 {public static void main(String[] args) throws Exception {//1.创建properties对象,先用他存储一些键值对数据Properties properties =new Properties();properties.setProperty("张三","123");properties.setProperty("李四","456");//2.把properties中的键值对数据存入到属性文件中去properties.store(new FileWriter("properties-xml-log-app\\src\\users2.properties"),"cc");}
}

XML 可扩展标记语言

  1. XML是由标签组成的
  2. XML中的标签名可以自己定义(可扩展)
  3. XML中只能有一个根标签
  4. XML中的标签可以有属性
  5. 如果一个文件中放置的是XML格式的数据,后缀是.xml
语法规则
  • XML中书写 < & ' " 会导致冲突,可以用如下字符代替
&lt; < 小于
&gt; > 大于
&amp; & 和号
&apos; ' 单引号
&quot; " 双引号
  • XML中可以写一个叫CDATA 的数据区:<![CDATA[....内容....]]>,里边内容可以随便写
<data>
<![CDATA[
3 <2  && 5 > 4
]]>
</data>
使用程序读取XML文件中的数据(Dom4j)

public class Dom4jTest1 {public static void main(String[] args) throws Exception {//1.创建一个Dom4j框架提供的解析器对象SAXReader saxReader = new SAXReader();//2.使用saxReader对象吧需要解析的文件读成Document文件Document document = saxReader.read("properties-xml-log-app\\src\\helloword.xml");//3.从文档对象中解析xml文件的全部信息Element root = document.getRootElement();System.out.println(root.getName());//4.获取根元素下的全部一级子元素//        List<Element> elements = root.elements();//指定获取 userList<Element> elements = root.elements("user");for (Element element : elements) {System.out.println(element.getName());}//5.获取当前元素下的某个子元素Element people = root.element("people");System.out.println(people.getText());//如果有很多子元素,默认获取第一个Element user = root.element("user");System.out.println(user.elementText("name"));//6.获取元素的属性信息Attribute id = user.attribute("id");System.out.println(id.getName());System.out.println(id.getValue());//7.获取全部文本内容System.out.println(user.elementText("name"));System.out.println(user.elementText("sex"));System.out.println(user.elementText("password"));Element data = user.element("data");System.out.println(data.getText());System.out.println(data.getTextTrim());//读取文本去除空格}
}
使用程序把数据写出到XML文件中去

直接把程序里的数据拼接成XML格式,然后IO流写出去

public class Test2 {public static void main(String[] args) {StringBuilder sb = new StringBuilder();sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n");sb.append("<book>\r\n");sb.append("<name>从入门到跑路</name>\r\n");sb.append("</book>\r\n");try (BufferedWriter bw = new BufferedWriter(new FileWriter("properties-xml-log-app\\src\\book.xml"));){bw.write(sb.toString());} catch (Exception e) {throw new RuntimeException(e);}}
}
约束XML文件的书写

就是限制XML文件只能按照某种格式书写,比如:限制标签,属性应该怎么写

  • DTD文档
  • Schema文档:可以约束数据类型

日志文件

  • 可以将系统执行的信息,方便的记录到指定的位置(控制台,文件,数据库)
  • 可以随时以开关的形式控制日志的启停,无需侵入到源代码中进行修改

LogBack: slf4j-api 日志接口 logback-core logback-classic

必须把logback.xml(对LogBack日志框架进行控制)直接拷贝到src目录下

public class LogBackTest1 {public static final Logger LOGGER = LoggerFactory.getLogger("LogBackTest");public static void main(String[] args) {//创建一个Logger日志对象try{LOGGER.info("chu方法开始执行---");chu(10,0);LOGGER.info("chu方法执行成功---");}catch(Exception e){LOGGER.error("chu方法执行失败了,出现了bug");}}public static void chu(int a,int b){int c = a/b;System.out.println("结果是:"+c);}
}
logback.xml
<?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>D:/idea/log/data.log</file><!--指定日志文件拆分和压缩规则--><rollingPolicyclass="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!--通过指定压缩文件名称,来确定分割文件方式--><fileNamePattern>D:/idea/log/data%i-%d{yyyy-MM-dd}.log.gz</fileNamePattern><!--文件拆分大小--><maxFileSize>1MB</maxFileSize></rollingPolicy></appender><!--level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR    |    ALL 和 OFF, 默认debug<root>可以包含零个或多个<appender-ref>元素,标识这个输出位置将会被本日志级别控制。--><!--ALL 开启日志  OFF 关闭日志--><root level="ALL"><!-- 注意:如果这里不配置关联打印位置,该位置将不会记录日志--><appender-ref ref = "CONSOLE"/><appender-ref ref="FILE" /></root>
</configuration>
logback设置日志级别

优先级由低到高

日志级别

说明

trace

追踪,指明程旭运行轨迹

debug

调试,实际应用中一般将其作为最低级别,而trace很少使用

info

输出重要信息, 数据连接, 网络连接, io操作等等, 使用较多

warn

警告问题, 可能会发生问题, 使用较多

error

错误信息, 使用较多

level 等于 info 时,只有大于等于 info 的日志才会被记录

<root level="ALL"><!-- 注意:如果这里不配置关联打印位置,该位置将不会记录日志--><appender-ref ref = "CONSOLE"/><appender-ref ref="FILE" /></root>

http://www.ppmy.cn/server/3007.html

相关文章

网工-BGP协议全面学习笔记(待更新和完善...)

作者&#xff1a;BSXY_19计科_陈永跃 BSXY_信息学院 注&#xff1a;未经允许禁止转发任何内容 网工-BGP协议全面学习笔记 1、OSPF基础2、BGP报文3、BGP案例4、BGP属性待更新和完善... 1、OSPF基础 在EGP协议中&#xff0c;引入了AS(Autonomous System&#xff0c;自治系统)的概…

linux设置程序在开机时自启动

​常见的有三种方式&#xff1a;1、/etc/rc.local文件中添加自启动命令 对于某些没有使用systemd的Linux发行版&#xff0c;可以在/etc/rc.local文件中添加自启动命令。请确保该文件具有可执行权限。例如&#xff0c;在/etc/rc.local文件中添加以下内容&#xff1a; /…

使用go和消息队列优化投票功能

文章目录 1、优化方案与主要实现代码1.1、原系统的技术架构1.2、新系统的技术架构1.3、查看和投票接口实现1.4、数据入库MySQL协程实现1.5、路由配置1.6、启动程序入口实现 2、压测结果2.1、设置Jmeter线程组2.2、Jmeter聚合报告结果&#xff0c;支持11240/秒吞吐量2.3、Jmeter…

文心一言VSchatGPT4

文心一言和GPT-4各有优势&#xff0c;具体表现在不同的测试场景下。 在某些测试场景中心一言的表现优于GPT-4&#xff0c;例如在故事的完整度和情节吸引力方面&#xff0c;文心一言表现得更加符合指令&#xff0c;情节更吸引人。这可能得益于其模型在训练时对中文语境的深入理…

加载 docker 镜像文件 centos7 系统 lnmp 环境 php8.2 php5.2 php7.4

# 加载镜像从tar文件 链接&#xff1a;https://pan.baidu.com/s/1s2yf7iroI-tBTK5b9zxxnA 提取码&#xff1a;6666 docker load < my_migration_image.tar # 运行新容器&#xff0c;可以使用相同的参数和命令 8233 电脑访问时对应的端口 80 docker 上的nginx 端口号 …

ios ipa包上传需要什么工具

​ 目录 前言 一、IPA包的原理 二、IPA包上传的步骤 2.apk软件制作工具创建应用程序 3.构建应用程序 4.生成证书和配置文件 5.打包IPA包 6.上传IPA包 三、总结 前言 iOS IPA包是iOS应用程序的安装包&#xff0c;可以通过iTunes或者其他第三方应用商店安装到iOS设备上。…

多模态AnyGPT——整合图像、语音和文本多模态大规模语言模型算法原理与实践

概述 大规模语言模型在理解和生成人类语言方面具有非凡的能力&#xff0c;但迄今为止&#xff0c;它们的能力主要局限于文本处理。然而&#xff0c;现实世界是一个多模式的环境&#xff0c;信息通过视觉、听觉和触觉等多种感官进行交换。融入这种多样性是开发下一代系统的主要…

Go 单元测试基本介绍

文章目录 引入一、单元测试基本介绍1.1 什么是单元测试&#xff1f;1.2 如何写好单元测试1.3 单元测试的优点1.4 单元测试的设计原则 二、Go语言测试2.1 Go单元测试概要2.2 Go单元测试基本规范2.3 一个简单例子2.3.1 使用Goland 生成测试文件2.3.2 运行单元测试2.3.3 完善测试用…