当前位置: 首页 > news >正文

Java开发-特殊文本文件,日志技术

目录

01.特殊文件,日志技术概述

02.特殊文件:Properties属性文件 

​编辑Properties案例

特殊文件:XML文件

XML的作用和应用场景

读取XML文件中的数据

XML的生成

约束XML文件的编写[了解]

日志技术

日志技术的体系

​编辑

​编辑

Logback日志框架的概述

Logback快速入门

核心配置文件logback.xml

logback设置日志级别


01.特殊文件,日志技术概述

我们之前所熟知的txt文件

但是在Java中有一特殊文件文件

我们应该会有这样一个疑问:为什么要用这些特殊文件?

假设一个场景: 存储多个用户的用户名和密码

如果我们用普通文件:

这样读取出来的数据没有办法解析.但是如果我们用属性文件,采取键值对的形式存储

XML也可以存储

这些特殊的文件可以把数据关系存储进去,方便我们读取出来之后能够解析它们的用户名和密码.在这个假设中用属性文件存储是更好的,那我们什么时候使用XML呢?

我们再来假设一个场景:我们要存储多个用户的:用户名,密码,家乡,性别

如果我们用属性文件存储信息回比较多很难解析那个地方开始那个低位结尾,如果我们用XML就非常nice! 

总结:为什么要用这些特殊文件?因为这些特殊文件可以存储有关系的数据,作为系统的配置文件,作为信息进行传输

那么这些文件,我们主要学什么?

了解它们的特点,作用

学习使用程序读取它们的数据

学习使用程序把数据存储到这些文件里

日志技术:把程序运行的信息,记录到文件中,方便程序员定位bug,并了解程序的执行情况等.

02.特殊文件:Properties属性文件 

特点:

1.都只能是键值对

2.键不能重复

3.文件后缀一般是.properties结尾的

我们读取属性文件可以用io流一行一行的读取,但是这样太麻烦繁琐,所以java提供了一个非常优雅的方案:使用一个Map集合Properties

Properties

是一个Map集合(键值对集合),但是我们一般不会当集合使用

核心作用:Properties是用来代表属性文件的,通过Properties可以读写属性文件里的内容

使用Properties读取属性文件里的键值对数据

代码实现:

注意:一定要检查一下编码方式,检查一下是不是UTF-8否认会出现???而不是中文

下面是查看设置的方法

import java.io.FileReader;
import java.util.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("Maven--1\\src\\main\\users.properties"));System.out.println(properties);}}

import java.io.FileReader;
import java.util.Properties;
import java.util.Set;/*** 目标:掌握使用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("Maven--1\\src\\main\\users.properties"));
//        System.out.println(properties);//3.根据键取值System.out.println(properties.getProperty("赵敏"));System.out.println(properties.getProperty("张无忌"));//4.遍历全部的键和值Set<String> keys = properties.stringPropertyNames();for(String key:keys){String value = properties.getProperty(key);System.out.println(key+"--->"+value);}properties.forEach((k,v)->{System.out.println(k+"--->"+v);});}
}

使用Properties把键值对数据写出到属性文件里去

import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;/*** 目标:掌握把键值对数据存入到属性文件中去*/
public class PropertiesTest2 {public static void main(String[] args) throws Exception {//1.创建Properties对象出来,西安用它存储一些键值对数据Properties properties = new Properties();properties.setProperty("掌握及","yjy");properties.setProperty("张素素","cuishan");//2.把properties对象中的键值对存入到属性文件中去//这个管道不需要自己关,内部用完会自己关properties.store(new FileWriter("Maven--1\\src\\main\\users2.properties"),"I saved many users!");}
}



Properties案例

一个属性文件的题目:

首先新建一个文件users.txt

题目是:找一下这个users.txt中有没有李芳,有的话改成18

import java.io.FileReader;
import java.io.FileWriter;
import java.util.Properties;public class PropertiesTest3 {public static void main(String[] args) throws Exception {//目标:读取属性文件,判断是否存在李芳,存在年龄为18  无所谓后缀只要是键值对的形式即可//1.加载属性文件的键值对到程序中来.Properties properties = new Properties();//2.开始加载properties.load(new FileReader("Maven--1\\src\\users.txt"));//3.判断是否包含李芳这个键if(properties.containsKey("李芳")){properties.setProperty("李芳","18");}//4.把properties对象的键值对数据重写写出去到属性文件中去properties.store(new FileWriter("Maven--1\\src\\users.txt"),"success");}
}

特殊文件:XML文件

XML(全称EXtensible Markup Language,可扩展标记语言)

本质是一种数据的格式,可以用来存储复杂的数据结构,和数据关系.

XML的特点

  • XML的"<标签名>"称为一个标签或一个元素,一般是成对出现的.
  • XML中的标签名可以自己定义(可扩展),但必须是正确的嵌套.
  • XML中只能有一个跟标签
  • XML中的标签可以有属性.
  • 如果一个文件中放置的是XML格式的数据,这个文件就是XML文件,后缀一般要写成.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!-- 注释:以上抬头声明必须放在第一行,必须有-->
<!-- 根标签只能有一个-->
<users><user id="1"><name>张无忌</name><sex>男</sex><地址>光明顶</地址><password>minmin</password><!-- <data> 3<2 && 5>4 </data> --></user><user id="2"><name>敏敏</name><sex>女</sex><地址>光明顶</地址><password>无忌</password></user></users>

<?xml version="1.0" encoding="UTF-8" ?>
<!-- 注释:以上抬头声明必须放在第一行,必须有-->
<!-- 根标签只能有一个-->
<users><user id="1"><name>张无忌</name><sex>男</sex><地址>光明顶</地址><password>minmin</password><data>3&lt;2&amp;&amp;5>4</data><data1><!-- 生成这个快捷CD --><![CDATA[3<2 && 5>4]]></data1></user><user id="2"><name>敏敏</name><sex>女</sex><地址>光明顶</地址><password>无忌</password></user></users>

XML可以在浏览器中渲染

XML的作用和应用场景

读取XML文件中的数据

一般会叫解析XML文件中的数据

自上而下的解析思想,一级一级地解析

import org.dom4j.Element;
import org.dom4j.io.SAXReader;import java.util.List;public class Dom4jTest1 {/*** 目标:掌握使用Dom4j框架解析XML文件*/public static void main(String[] args) throws Exception {// 1.创建一个Dom4j框架提供的解析器对象SAXReader saxReader = new SAXReader();// 2.使用saxReader对象把需要解析的XML文件读成一个Document对象.Document document = saxReader.read("Maven--1\\src\\helloworld.xml");// 3.从文档对象中解析XML的全部数据Element root = document.getRootElement();System.out.println(root.getName());//users// 4.获取根元素下的全部一级子元素List<Element> elements = root.elements();for (Element element : elements) {System.out.println(element);}List<Element> elements2 = root.elements("user");//指定拿某个//5.获取当前元素下的某个子元素Element people = root.element("people");System.out.println(people.getText());//很多人// 如果下面有很多的子元素user,默认获取第一个Element use2 = root.element("user");System.out.println(use2.elementText("name"));//张无忌//6.获取元素的属性信息System.out.println(use2.attributeValue("id"));//1Attribute id = use2.attribute("id");System.out.println(id.getName());System.out.println(id.getValue());List<Attribute> attributes = use2.attributes();for (Attribute attribute : attributes) {System.out.println(attribute.getName() + "=" + attribute.getValue());}// 7.如何获取全部的文本内容:获取当前元素下的子元素的文本值System.out.println(use2.elementText("name"));System.out.println(use2.elementText("地址"));System.out.println(use2.elementText("password"));//TextTrim去掉空格}
}

XML的生成

如何使用程序把数据写出到XML文件中去? 现在开发中已经不用了,不建议用dom4j

推荐直接把程序里的数据拼接成XML格式,然后用IO流输出

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;public class Dom4jTest2 {/*** 目标:如何使用程序把数据写出到XML文件中去*<?xml version="1.0" encoding="UTF-8" ?>
*      <book>
*         <name>从入门到跑路</name>
*         <author>dlei</author>
*         <price>999.9</price>
*     </book>*/public static void main(String[] args){//1.使用一个StringBuilder对象来拼接XML格式的数据StringBuilder sb = new StringBuilder();sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n");sb.append("<book>\r\n");sb.append("\t<name>").append("从入门到跑路").append("</name>\r\n");sb.append("\t<author>").append("dlei").append("</author>\r\n");sb.append("\t<price>").append("999.9").append("</price>\r\n");sb.append("</book>");try (BufferedWriter bw = new BufferedWriter(new FileWriter("Maven--1/src/book.xml"));){bw.write(sb.toString());} catch (IOException e) {throw new RuntimeException(e);}}
}

约束XML文件的编写[了解]

可以约束XML文件的编写

不能约束具体的数据类型 

schema可以约束具体数据类型 

日志技术

什么是日志?

希望系统能记住某些数据是被谁操作的,比如被谁删除了?

像分析用户浏览系统的具体情况,以便挖掘用户的具体喜好?

当系统在开发中或者上线后出现了bug,崩溃了,该通过什么去分析,定位bug?

这些日志都可以解决

  • 日志就好比生活中的日记,可以记录你生活中的点点滴滴.
  • 程序中的日志,通常就是一个文件,里面记录的是程序运行过程中的各种信息

日志技术的体系

Logback日志框架的概述

Logback快速入门

核心配置文件logback.xml

logback设置日志级别

相关文章:

Java开发-特殊文本文件,日志技术

目录 01.特殊文件,日志技术概述 02.特殊文件:Properties属性文件 ​编辑Properties案例 特殊文件:XML文件 XML的作用和应用场景 读取XML文件中的数据 XML的生成 约束XML文件的编写[了解] 日志技术 日志技术的体系 ​编辑 ​编辑 Logback日志框架的概述 Logback快…...

Django ORM深度游:探索多对一、一对一与多对多数据关系的奥秘与实践

系列文章目录 Django入门全攻略&#xff1a;从零搭建你的第一个Web项目Django ORM入门指南&#xff1a;从概念到实践&#xff0c;掌握模型创建、迁移与视图操作Django ORM实战&#xff1a;模型字段与元选项配置&#xff0c;以及链式过滤与QF查询详解Django ORM深度游&#xff…...

无人机路径规划:基于鸽群优化算法PIO的无人机三维路径规划MATLAB代码

一、无人机模型介绍 无人机三维航迹规划_无人机航迹规划-CSDN博客 二、部分代码 close all clear clc warning (off) global model global gca1 gca2 gca3 gca4 model CreateModel(); % Create search map and parameters load(BestPosition5.mat); load(ConvergenceCurve5…...

ArcGIS属性域和子类型

01 属性域 道路的车道数值是小于10的。在编辑道路的此属性时&#xff0c;为了限制其值在10以内&#xff0c;可以使用属性域。当输入数据超过10时&#xff0c;就会限制输入。 限制输入这个功能是Pro特有的&#xff0c;在ArcMap中输入超出限制的值也是合法的&#xff0c;需要手动…...

电子电器架构 --- 什么是域控制器?

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…...

链表头部插入结点

Linked List Inserting a node at beginning #include<stdlib.h>//为了用malloc #include<stdio.h> struct node {int data;struct node* next;//在cpp中可以只写 Node *Link&#xff1b;//为了表意明确&#xff0c;Link也经常被命名为next }; struct node* head…...

k8s集群修改apiserver的ip地址

有时候由于服务器的调整&#xff0c;导致ip的的变化&#xff0c;k8s集群的api大管家的ip变动会导致kubectl的接口都无法正常使用&#xff0c;这是只需要将k8s主节点配置文件的ip替换即可。 例如无需要将原来的192.168.146.202的ip替换成192.168.85.202&#xff0c;执行一下操作…...

C语言编程技巧:深度挖掘与高效实践

C语言编程技巧&#xff1a;深度挖掘与高效实践 在编程的世界里&#xff0c;C语言以其高效、灵活和底层控制能力强等特点&#xff0c;一直备受开发者们的青睐。然而&#xff0c;要想真正掌握C语言的精髓&#xff0c;并编写出高效、健壮的代码&#xff0c;却并非易事。本文将从四…...

十_信号14 - system()

意思是 应在在调用 system() 函数前 阻塞 SIGCHLD 信号&#xff0c;否则&#xff0c;子进程结束的时候&#xff0c;系统会向该进程(父)发送 SIGCHLD信号&#xff0c;则该进程认为是自己的一个子进程结束了&#xff0c;于是调用 wait函数获取子进程的终止状态。这本来是正常的操…...

【Python网络爬虫】详解python爬虫中URL资源抓取

&#x1f517; 运行环境&#xff1a;PYTHON &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#x1f917;&#x1f91…...

AI办公自动化:用kimi批量提取音频中的标题并重命名

很多音频文件&#xff0c;文件名很乱&#xff0c;需要根据音频信息中的标题聪明吗 在kimi中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;一步步的思考&#xff0c;完成以下脚本的撰写&#xff1a; 打开文件夹&#xff1a;E:\有声\a16z播客 读取里面所有的mp3格…...

flyfish3.0.0配置避坑

1.基础环境准备篇 doc/01-基础环境准备篇.md 云智慧/FlyFish - Gitee.com 使用教程里给出的java环境时&#xff0c;可以显示java版本&#xff0c;但是不能显示Maven的版本 改为&#xff1a; export NODE_HOME/usr/local/node/node-v14.19.3-linux-x64 export PATH$NODE_HOME…...

Spring (33)CSRF(跨站请求伪造)保护

跨站请求伪造&#xff08;CSRF&#xff09;是一种常见的网络攻击手段&#xff0c;它允许攻击者在不知情的用户浏览器中发起恶意请求。这种攻击利用了网站对用户浏览器的信任。如果用户在浏览器中已经登录了一个网站&#xff0c;攻击者就可以构造一个请求&#xff0c;这个请求能…...

【一刷《剑指Offer》】面试题 29:数组中出现次数超过一半的数字

力扣对应题目链接&#xff1a;169. 多数元素 - 力扣&#xff08;LeetCode&#xff09; 牛客对应题目链接&#xff1a;数组中出现次数超过一半的数字_牛客题霸_牛客网 (nowcoder.com) 核心考点 &#xff1a; 数组使用&#xff0c;简单算法的设计。 一、《剑指Offer》对应内容 二…...

vx小程序初学

小程序初学 在我还没接触到微信小程序之前&#xff0c;通常使用轮播要么手写或使用swiper插件去实现&#xff0c;当我接触到微信小程序之后&#xff0c;我看到了微信小程序的强大之处&#xff0c;让我为大家介绍一下吧&#xff01; swiper与swiper-item一起使用可以做轮播图 …...

vue 笔记01

目录 01 vuejs中属性的基本使用 02 v-show指令的使用 03 v-if 指令的使用 04 v-for指令的使用 05 v-model 指令 06 template模板标签 07 v-on事件的绑定指令 08 事件中的event对象 01 vuejs中属性的基本使用 {{ }} 叫做mustache模板语法 双花括号 小胡子语法 双花括号…...

开发电商系统的技术选型

开发电商系统是一个复杂的任务&#xff0c;需要全面的技术选型来确保系统的稳定性、可扩展性和性能。本文将详细探讨在开发电商系统时涉及的各方面技术选型&#xff0c;包括架构设计、前端技术、后端技术、数据库选择、缓存策略、安全性、支付系统、日志和监控、以及自动化运维…...

C++STL---vector常见用法

C STL中的vector vector是C标准模板库&#xff08;STL&#xff09;中最常用的序列容器之一&#xff0c;它是一个动态数组&#xff0c;能够存储任意类型的对象&#xff08;如整数、字符串等&#xff09;。vector的主要优点是提供了快速的随机访问&#xff0c;同时还能够动态地调…...

linux文件共享之samba

1.介绍 Samba是一个开源文件共享服务&#xff0c;可以使linux与windows之间进行文件共享&#xff0c;可以根据不同人员调整共享设置以及权限管理。 2.安装 一个命令就OK了&#xff1a;yum install -y samba [rootansible01 ~]# yum install -y samba 已加载插件&#xff1a;l…...

端午传统食品创意营销方案

端午传统食品创意营销方案 目 录 一、市场营销环境分析 1 &#xff08;一&#xff09;历史记载 1 &#xff08;二&#xff09;粽叶的象征 1 &#xff08;三&#xff09;粽子文化 1 &#xff08;四&#xff09;竞争分析 2 &#xff08;五&#xff09;粽子当今发展 4 二、产品创…...

制作ChatPDF之Elasticsearch8.13.4搭建(一)

Elasticsearch8.x搭建 在Windows系统上本地安装Elasticsearch的详细步骤如下&#xff1a; 1. 下载Elasticsearch 访问 Elasticsearch下载页面。选择适用于Windows的版本8.13.4&#xff0c;并下载ZIP文件。 2. 解压文件 下载完成后&#xff0c;找到ZIP文件&#xff08;例如…...

一种最大重叠离散小波包特征提取和支持向量机的ECG心电信号分类方法(MATLAB 2018)

目前小波分析算法常采用Mallat快速算法。该算法由与滤波器卷积、隔点采样和隔点插零等三个环节组成。由于实际使用的滤波器并不具有理想频域特性&#xff0c;使得在标准二进小波算法中存在着频率混叠和小波系数失真等缺点&#xff0c;在标准二进小波包算法中还存在频带错乱现象…...

德勤:中国、印度等对ChatGPT等生成式AI应用,处领先地位

全球四大会计事务所之一的德勤&#xff08;Deloitte&#xff09;在官网发布了一份&#xff0c;名为《Generative AI in Asia Pacific: Young employees lead as employers play catch-up》的深度调查报告。 主要查看中国、澳大利亚、印度、日本、新加坡、韩国、中国台湾等亚太…...

开发靠谱心得

1、目的 记录下 不靠谱的行为&#xff0c;以规范自己的开发步骤。 2、内容 2.1 不应该做哪些事情 1、禁止虚假的交付 2、禁止随意的承诺 3、禁止推卸责任式的通知 4、禁止组织浪费多人时间的会议 5、禁止重要事故不向上反馈 6、禁止延期不提前预警 7、禁止遗漏工作和疏忽大意 …...

【OpenHarmony】TypeScript 语法 ④ ( 函数 | TypeScript 具名函数和匿名函数 | 可选参数 | 剩余参数 | 箭头参数 )

文章目录 一、TypeScript 函数1、TypeScript 具名函数和匿名函数2、TypeScript 函数 与 JavaScript 函数对比3、TypeScript 函数 可选参数4、TypeScript 函数 剩余参数5、TypeScript 箭头函数 参考文档 : <HarmonyOS第一课>ArkTS开发语言介绍 一、TypeScript 函数 1、Typ…...

嵌入式工程师人生提质的十大成长型思维分享

大家好,作为一名嵌入式开发者,很多时候,需要考虑个人未来的发展,人生旅途复杂多变,时常面临各种各样的挑战。如何在这个复杂多变的社会中稳步向前,不断成长,成为每个人都应该思考的问题。实际上,思维方式的差异决定我们应对挑战的能力与成长的速度。 第一:寻找自我坐…...

名下企业查询,清晰明了;在线操作,方便快捷

在现代社会&#xff0c;越来越多的人开始涉足创业和投资&#xff0c;拥有自己的企业成为一种时尚。然而&#xff0c;随之而来的是繁琐的企业注册流程和复杂的信息查询。为了解决这个问题&#xff0c;挖数据平台推出了一项名下企业查询接口&#xff0c;提供了一种方便快捷的方式…...

图书推荐:ChatGPT专业知识信息课程

《ChatGPT专业知识信息课程》&#xff08;ChatGPT-Expertise Informative Course&#xff09; 是一本由Dwayne Anderson撰写的电子书&#xff0c;提供了关于ChatGPT的丰富知识。该书涵盖了与ChatGPT相关的各种主题&#xff0c;如其与OpenAI的关系、ChatGPT与GPT-3之间的混淆、C…...

Java项目:94 springboot大学城水电管理系统

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本管理系统有管理员和用户。 本大学城水电管理系统管理员功能有个人中心&#xff0c;用户管理&#xff0c;领用设备管理&#xff0c;消耗设备…...

Unity内制作动画

Unity内制作动画 动画剪辑&#xff08;Animation Clips&#xff09; 创建动画剪辑&#xff1a;在Unity中&#xff0c;可以通过导入动画数据来创建动画剪辑。这些数据可以是FBX、OBJ等格式的3D模型文件&#xff0c;其中包含关键帧动画。 编辑动画剪辑&#xff1a;在Unity的Anim…...