做淘客网站用备案,代做毕设网站推荐,电商静态网页模板,厦门翔安区建设局网站十二、特殊文件和日志技术
1、特殊文件 properties#xff1a;用来存储键值对数据。 xml#xff1a;用来存储有关系的数据。 1.1 properties文件 特点#xff1a;存储键值对#xff0c;键不能重复#xff0c;文件后缀一般是.properties结尾的。 properties#xff1a;是…十二、特殊文件和日志技术
1、特殊文件 properties用来存储键值对数据。 xml用来存储有关系的数据。 1.1 properties文件 特点存储键值对键不能重复文件后缀一般是.properties结尾的。 properties是一个Map集合但是一般不能用来当集合使用。 核心作用 Properties是用来代表属性文件的通过Properties 可以读写属性文件里的内容。 构造器说明public Properties()用于构建Properties集合对象空容器
使用Properties读取键值对数据常用方法说明public void load( InputStream is )通过字节输入流读取属性文件里的键值对数据public void load( Reader reader )通过字符输入流读取属性文件里的键值对数据public String getProperty( String key )根据键获取值(其实就是get方法的效果)public Set stringPropertyNames()获取全部键的集合(其实就是ketSet方法的效果) public class PropertiesTest {public static void main(String[] args) throws Exception {Properties propertiesnew Properties();properties.load(new FileReader(object-app\\src\\akc4\\SpecialFile\\abc.properties));//根据健来获取值System.out.println(properties); //{password123, nameroot}String nameproperties.getProperty(name);String passwordproperties.getProperty(password);System.out.println(name); //rootSystem.out.println(password); //123//获取全部键存到set集合里面去SetString keys properties.stringPropertyNames();//遍历所有内容for (String key:keys) {String valueproperties.getProperty(key);System.out.println(key-----value);// password-----123//name-----root}}
}使用Properties写入键值对数据常用方法说明public Object setProperty(String key , String value)保存键值对数据到Properties对象中去。public void store(OutputStream os , String comments )把键值对数据通过字节输出流写出到属性文件里去public void store( Writer w String comments )把键值对数据通过字符输出流写出到属性文件里去
public class PropertiesTest {public static void main(String[] args) throws Exception {Properties propertiesnew Properties();//将键值对数据先保存到properties对象中去properties.setProperty(小明,54321);properties.setProperty(小花,1234);properties.setProperty(红红,5555);System.out.println(properties);//将对象数据保存到properties文件中去如果没有该文件会自动创建。参数字节或字符输出流注释properties.store(new FileWriter(object-app\\src\\akc4\\SpecialFile\\123.properties),用户名和密码);}
}1.1.2 例题 有一个info.txt文件里面包含键值对小明12小花18小罗19小天20判断里面是否有小罗如果有将值改为18。 public class PropertiesTest {public static void main(String[] args) throws Exception {//创建一个properties对象Properties propertiesnew Properties();//将文件加载到项目中来properties.load(new FileReader(object-app\\src\\akc4\\SpecialFile\\info.txt));//因为Properties是Map中的集合所有可通过Map提供的方法containKey方法来进行判断健是否存在。if (properties.containsKey(小罗)){//存在将properties对象中小罗的值进行替换properties.setProperty(小罗,18);//将对象的新值写入到对应文件中去properties.store(new FileWriter(object-app\\src\\akc4\\SpecialFile\\info.txt),姓名和年龄);System.out.println(修改成功);}else{System.out.println(小罗不存在);}}
}1.2 XML 可扩展标记语言 作用本质是一种数据格式可以存储复杂的数据结构和数据关系。 应用场景经常用来做为系统的配置文件;或者作为-种特殊的数据结构在网络中进行传输。格式如下 !--开头必须是固定的格式--
?xml version1.0 encodingUTF-8 ?!--只有一个根标签--
usersuser id1name小明/namesex男/sex地址四川/地址/useruser id2name小花/namesex女/sex地址四川/地址/user
/users在XML中需要转义的字符有 amp; lt; gt; quot; apos; 也可以输入CD再回车就会出现 ![CDATA[ ]]在中括号里就可以输入任意字符了。
1.2.1 DOM4J解析库 下载链接https://dom4j.github.io/ DOM4J解析XML-得到Document对象 SAXReader: Dom4j提供的解析器可以认为是代表整个Dom4j框架 构造器/方法说明public SAXReader()构建DOM4J的解析器对象public Document readString url 把XML文件读成Document对象public Document readInputStream is通过字节输入流读取XML文件
方法名说明Element getRootElement获得根元素对象
通过根元素能调用的元素方法获取xml里面的内容说明public String getName获取元素名字public List elements()获取当前元素下所有的子元素public List elements( String name )获取当前元素下指定的名字的子元素返回集合public Element element String name 得到当前元素下指定名字的子元素如果有多个名字相同的返回第一个public String attributeValue ( String name )通过属性名直接得到属性值public String elementText子元素名获取指定名称的子元素的文本public String getText获取文本
public class Dom4jInputTest {public static void main(String[] args) throws Exception {//创建一个saxReader对象SAXReader saxReadernew SAXReader();//将xml文件读成Document对象Document document saxReader.read(object-app\\src\\akc4\\xmlDir\\info.xml);//通过Document对象调用方法读取根以元素Element rootElementdocument.getRootElement();//获取元素名System.out.println(rootElement.getName());//users//获取根元素下第一个元素为user的元素再获取元素对应的id属性值String id1rootElement.element(user).attributeValue(id);System.out.println(id1); //1//获取根元素下第一元素为user的元素再向下的name元素获取其对应的文本String namerootElement.element(user).element(name).getText();System.out.println(name); //小明//获取根元素下的所有元素存放到list集合中ListElement listElementsrootElement.elements();//遍历xml中所有人的个人信息for (Element listElemnt: listElements) {System.out.println(----------------------------);System.out.println(listElemnt.element(name).getText());System.out.println(listElemnt.element(sex).getText());System.out.println(listElemnt.element(地址).getText());}}
}写出XML数据推荐直接把程序里的数据拼接成XML格式然后用IO流写出去! 1、通过StringBuilder来进行拼接xml。 2、将拼接好的字符串通过缓冲字符输出流输出到xml文件中就行。 2、日志技术 作用1把程序运行的信息记录到文件中方便程序员定位bug、并了解程序的执行情况等。 作用2可以随时以开关的形式控制日志的启停无需侵入到源代码中去进行修改。 因为对Commons Logging接口不满意,有人就搞了SLF4};因为对Log4j的性能不满意,有人就搞了Logback。 下载对应的jar包 slf4j-api、logback-core、logback-classic 下载jar包网站以后所以的jar包都可以在里面下载也支持maven下载。 网站链接https://mvnrepository.com 注意版本间是兼容可参考slf4j-api-1.7.26、logback-core-1.2.3、logback-classic-1.2.3 2.1 实现步骤 导入slf4j-api、logback-core、logback-classic框架到项目中去。 将Logback框架的核心配置文件logback.xml直接拷贝到src目录下(必须是src下)logback.xml如下注意改一下路径改到自己的项目目录下的某个地方。valueW:/StudyFile.. ?xml version1.0 encodingUTF-8?
configuration debugfalse!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--property nameLOG_HOME valueW:/StudyFile/Java/Projiect/BasicTraining/object-app/src/log/!--日志输出位置控制台日志 控制台输出 --appender nameSTDOUT classch.qos.logback.core.ConsoleAppenderencoder classch.qos.logback.classic.encoder.PatternLayoutEncoder!--格式化输出%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度,%msg日志消息%n是换行符--pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n/pattern/encoder/appender!--文件日志 按照每天生成日志文件 --appender nameFILE classch.qos.logback.core.rolling.RollingFileAppenderrollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy!--日志文件输出的文件名--FileNamePattern${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log/FileNamePattern!--日志文件保留天数--MaxHistory30/MaxHistory/rollingPolicyencoder classch.qos.logback.classic.encoder.PatternLayoutEncoder!--格式化输出%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符--pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n/pattern!--日志输出编码--charsetUTF-8/charset/encoder!--日志文件最大的大小--triggeringPolicy classch.qos.logback.core.rolling.SizeBasedTriggeringPolicyMaxFileSize10MB/MaxFileSize/triggeringPolicy/appender!-- show parameters for hibernate sql 专为 Hibernate 定制 --logger nameorg.hibernate.type.descriptor.sql.BasicBinder levelTRACE /logger nameorg.hibernate.type.descriptor.sql.BasicExtractor levelDEBUG /logger nameorg.hibernate.SQL levelDEBUG /logger nameorg.hibernate.engine.QueryParameters levelDEBUG /logger nameorg.hibernate.engine.query.HQLQueryPlan levelDEBUG /!--myibatis log configure--logger namecom.apache.ibatis levelTRACE/logger namejava.sql.Connection levelDEBUG/logger namejava.sql.Statement levelDEBUG/logger namejava.sql.PreparedStatement levelDEBUG/!-- 日志输出级别 (levelOFF 所有是日志都不记录levelALL 所有的日志都被记录levelDEBUG 代表所有等级为DEBUG及以上的日志即 DEBUG, INFO, WARN, ERROR都会被记录下来。) --root levelDEBUG!--输出到控制台--appender-ref refSTDOUT /!--输出到文件--appender-ref refFILE//root
/configuration 日志级别指的是日志信息的类型日志都会分级别常见的日志级别如下表(优先级依次升高) : 只有日志的级别是大于或等于核心配置文件配置的日志级别才会被记录,否则不记录。 日志级别说明trace追踪指明程序运行轨迹debug调试实际应用中一般将其作为最低级别而trace则很少使用info输出重要的运行信息数据连接、网络连接、10操作等等使用较多warn警告信息 可能会发生问题使用较多error错误信息使用较多 创建Logback框架提供的Logger对象然后用Logger对象调用其提供的方法就可以记录系统的日志信息。类名随便取。 public static final Logger LOGGER LoggerFactory. getLogger(“类名);
2.2 测试代码 会在控制台上输出也会写入到 TestWeb文件修改日期.log 的文件里。 public class LogBackTest {//创建一个日志对象public static final Logger LOGGER LoggerFactory.getLogger(LogTest);public static void main(String[] args) {LOGGER.info(开始记录日志);chu(10,0);LOGGER.info(执行成功日志);}public static void chu(int a,int b){LOGGER.debug(传入的值为aa,bb);try {int ca/b;LOGGER.info(结果为c);}catch(Exception e){LOGGER.error(错误日志e);}}
}
文章转载自: http://www.morning.xdpjf.cn.gov.cn.xdpjf.cn http://www.morning.lzsxp.cn.gov.cn.lzsxp.cn http://www.morning.fbbmg.cn.gov.cn.fbbmg.cn http://www.morning.ygrkg.cn.gov.cn.ygrkg.cn http://www.morning.ctqlq.cn.gov.cn.ctqlq.cn http://www.morning.gnkbf.cn.gov.cn.gnkbf.cn http://www.morning.lbcbq.cn.gov.cn.lbcbq.cn http://www.morning.zhffz.cn.gov.cn.zhffz.cn http://www.morning.pxlpt.cn.gov.cn.pxlpt.cn http://www.morning.qyqdz.cn.gov.cn.qyqdz.cn http://www.morning.ntnml.cn.gov.cn.ntnml.cn http://www.morning.iiunion.com.gov.cn.iiunion.com http://www.morning.bkpbm.cn.gov.cn.bkpbm.cn http://www.morning.jqtb.cn.gov.cn.jqtb.cn http://www.morning.mqzcn.cn.gov.cn.mqzcn.cn http://www.morning.sblgt.cn.gov.cn.sblgt.cn http://www.morning.fbmzm.cn.gov.cn.fbmzm.cn http://www.morning.gklxm.cn.gov.cn.gklxm.cn http://www.morning.sgbjh.cn.gov.cn.sgbjh.cn http://www.morning.wjrq.cn.gov.cn.wjrq.cn http://www.morning.ygztf.cn.gov.cn.ygztf.cn http://www.morning.lrskd.cn.gov.cn.lrskd.cn http://www.morning.kjyhh.cn.gov.cn.kjyhh.cn http://www.morning.kmcby.cn.gov.cn.kmcby.cn http://www.morning.nzdks.cn.gov.cn.nzdks.cn http://www.morning.lhyhx.cn.gov.cn.lhyhx.cn http://www.morning.klyyd.cn.gov.cn.klyyd.cn http://www.morning.jqrhz.cn.gov.cn.jqrhz.cn http://www.morning.lcxzg.cn.gov.cn.lcxzg.cn http://www.morning.xznrk.cn.gov.cn.xznrk.cn http://www.morning.gcjhh.cn.gov.cn.gcjhh.cn http://www.morning.hmqmm.cn.gov.cn.hmqmm.cn http://www.morning.nfbkp.cn.gov.cn.nfbkp.cn http://www.morning.mwpcp.cn.gov.cn.mwpcp.cn http://www.morning.gfrtg.com.gov.cn.gfrtg.com http://www.morning.sfdky.cn.gov.cn.sfdky.cn http://www.morning.jbfzx.cn.gov.cn.jbfzx.cn http://www.morning.nkrmh.cn.gov.cn.nkrmh.cn http://www.morning.dwwlg.cn.gov.cn.dwwlg.cn http://www.morning.klzdy.cn.gov.cn.klzdy.cn http://www.morning.hnrqn.cn.gov.cn.hnrqn.cn http://www.morning.bjndc.com.gov.cn.bjndc.com http://www.morning.hengqilan.cn.gov.cn.hengqilan.cn http://www.morning.txtgy.cn.gov.cn.txtgy.cn http://www.morning.tcxzn.cn.gov.cn.tcxzn.cn http://www.morning.kdbbm.cn.gov.cn.kdbbm.cn http://www.morning.qkrgk.cn.gov.cn.qkrgk.cn http://www.morning.blxlf.cn.gov.cn.blxlf.cn http://www.morning.kdhrf.cn.gov.cn.kdhrf.cn http://www.morning.grjh.cn.gov.cn.grjh.cn http://www.morning.rrjzp.cn.gov.cn.rrjzp.cn http://www.morning.srxhd.cn.gov.cn.srxhd.cn http://www.morning.xwnnp.cn.gov.cn.xwnnp.cn http://www.morning.zqwp.cn.gov.cn.zqwp.cn http://www.morning.tsdqr.cn.gov.cn.tsdqr.cn http://www.morning.webife.com.gov.cn.webife.com http://www.morning.wdlyt.cn.gov.cn.wdlyt.cn http://www.morning.pxjp.cn.gov.cn.pxjp.cn http://www.morning.rnnts.cn.gov.cn.rnnts.cn http://www.morning.ygrkg.cn.gov.cn.ygrkg.cn http://www.morning.dgmjm.cn.gov.cn.dgmjm.cn http://www.morning.ltspm.cn.gov.cn.ltspm.cn http://www.morning.pzdxg.cn.gov.cn.pzdxg.cn http://www.morning.hhskr.cn.gov.cn.hhskr.cn http://www.morning.gqtw.cn.gov.cn.gqtw.cn http://www.morning.tmxfn.cn.gov.cn.tmxfn.cn http://www.morning.lmdfj.cn.gov.cn.lmdfj.cn http://www.morning.bfkrf.cn.gov.cn.bfkrf.cn http://www.morning.kehejia.com.gov.cn.kehejia.com http://www.morning.lgnrl.cn.gov.cn.lgnrl.cn http://www.morning.pxwzk.cn.gov.cn.pxwzk.cn http://www.morning.vattx.cn.gov.cn.vattx.cn http://www.morning.ntqjh.cn.gov.cn.ntqjh.cn http://www.morning.wnhml.cn.gov.cn.wnhml.cn http://www.morning.jnkng.cn.gov.cn.jnkng.cn http://www.morning.jxjrm.cn.gov.cn.jxjrm.cn http://www.morning.wfcqr.cn.gov.cn.wfcqr.cn http://www.morning.ssgqc.cn.gov.cn.ssgqc.cn http://www.morning.hqmfn.cn.gov.cn.hqmfn.cn http://www.morning.rwzkp.cn.gov.cn.rwzkp.cn