日志的规范是什么,常见的有几种形式。
日志规范大多是一些接口,提供给实现框架去设计的。
常见的规范是: Commons Logging 、Simple Logging Facade for Java
日志的实现框架有哪些常见的? Log4J 、Logback
Logback是基于slf4j的日志规范实现的框架。
Logback主要分为三个技术模块:
logback-core: logback-core 模块为其他两个模块奠定了基础,必须有。
logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API。
logback-access 模块与 Tomcat 和 Jetty 等 Servlet 容器集成,以提供 HTTP 访问日志功能
所需模块:
slf4j-api:日志规范、 logback-core:基础模块。、 logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API。
通过logback.xml 中的<append>标签可以设置输出位置和日志信息的详细格式。
通常可以设置2个日志输出位置:一个是控制台、一个是系统文件中。
日志级别
级别程度依次是:TRACE< DEBUG< INFO<WARN<ERROR ;
默认级别是debug(忽略大小写),对应其方法。 作用:用于控制系统中哪些日志级别是可以输出的,只输出级别不低于设定级别的日志信息。 ALL 和 OFF分别是打开全部日志信息,及关闭全部日志信息。
具体在<root level=“INFO”>标签的level属性中设置日志级别。
文件
1、File类的作用? 创建对象定位文件,可以删除、获取文件信息等。但是不能读写文件内容。 2、File类构建对象的方式 ? File file = new File(“文件/文件/绝对路径/相对路径”);
3、绝对路径和相对路径是什么样的? 绝对路径是带盘符的,依赖当前系统。 相对路径是不带盘符的,默认相对到工程下开始寻找文件。
File类的判断文件类型、获取文件信息功能
方法名称 | 说明 |
public boolean isDirectory() | 测试此抽象路径名表示的File是否为文件夹 |
public boolean isFile() | 测试此抽象路径名表示的File是否为文件 |
public boolean exists() | 测试此抽象路径名表示的File是否存在 |
public String getAbsolutePath() | 返回此抽象路径名的绝对路径名字符串 |
public String getPath() | 将此抽象路径名转换为路径名字符串 |
public String getName() | 返回由此抽象路径名表示的文件或文件夹的名称 |
public long lastModified() | 返回文件最后修改的时间毫秒值 |
文件创建
方法名称 | 说明 |
public boolean createNewFile() | 创建一个新的空的文件 |
public boolean mkdir() | 只能创建一级文件夹 |
public boolean mkdirs() | 可以创建多级文件夹 |
文件删除
方法名称 | 说明 |
public boolean delete() | 删除由此抽象路径名表示的文件或空文件夹 |
文件遍历
方法名称 | 说明 |
public boolean delete() | 删除由此抽象路径名表示的文件或空文件夹 |
Unicode是万国码,以UTF-8编码后一个中文一般以三个字节的形式存储。
UTF-8也要兼容ASCII编码表。 技术人员都应该使用UTF-8的字符集编码。
编码前和编码后的字符集需要一致,否则会出现中文乱码。
字符串常见的字符底层组成是什么样的?
英文和数字等在任何国家的字符集中都占1个字节 GBK字符中一个中文字符占2个字节
UTF-8编码中一个中文1般占3个字节
编码前的字符集和编码好的字符集有什么要求?
必须一致,否则会出现中文字符乱码 英文和数字在任何国家的编码中都不会乱码。
方法名称 | 说明 |
byte[] getBytes() | 使用平台的默认字符集将该 String编码为一系列字节,将结果存储到新的字节数组中 |
byte[] getBytes(String charsetName) | 使用指定的字符集将该 String编码为一系列字节,将结果存储到新的字节数组中 |
IO流的作用? 读写文件数据的。 IO流是怎么划分的,大体分为几类,各自的作用?
字节流:字节输入流,字节输出流(读写字节数数据的)
字符流:字符输入流,字符输出流(读写字符数据的)
方法名称 | 说明 |
public int read() | 每次读取一个字节返回,如果字节已经没有可读的返回-1 |
public int read(byte[] buffer) | 每次读取一个字节数组返回,如果字节已经没有可读的返回-1 |
每次读取一个字节存在什么问题? 性能较慢,读取中文字符输出无法避免乱码问题。
文件字节输出流:FileOutputStream 作用:以内存为基准,把内存中的数据以字节的形式写出到磁盘文件中去的流。
构造器 | 说明 |
public FileOutputStream(File file) | 创建字节输出流管道与源文件对象接通 |
public FileOutputStream(File file,boolean append) | 创建字节输出流管道与源文件对象接通,可追加数据 |
public FileOutputStream(String filepath) | 创建字节输出流管道与源文件路径接通 |
public FileOutputStream(String filepath,boolean append) | 创建字节输出流管道与源文件路径接通,可追加数据 |
3. 字节输出流如何实现写出去的数据能换行 os.write(“\r\n”.getBytes())
4. 如何让写出去的数据能成功生效?
flush()刷新数据 close()方法是关闭流,关闭包含刷新,关闭后流不可以继续使用了。
资源释放的方式
finally:在异常处理时提供finally块来执行所有清除操作,比如说IO流中的释放资源
特点:被finally控制的语句最终一定会执行,除非JVM退出 异常处理标准格式:try….catch…finally
try-catch-resource的作用: 自动释放资源、代码简洁
文件字符输入流:Reader
作用:以内存为基准,把磁盘文件中的数据以字符的形式读取到内存中去。
构造器 | 说明 |
public FileReader(File file) | 创建字符输入流管道与源文件对象接通 |
public FileReader(String pathname) | 创建字符输入流管道与源文件路径接通 |
文件字符输出流:FileWriter
作用:以内存为基准,把内存中的数据以字符的形式写出到磁盘文件中去的流。
构造器 | 说明 |
public FileWriter(File file) | 创建字符输出流管道与源文件对象接通 |
public FileWriter(File file,boolean append) | 创建字符输出流管道与源文件对象接通,可追加数据 |
public FileWriter(String filepath) | 创建字符输出流管道与源文件路径接通 |
public FileWriter(String filepath,boolean append) | 创建字符输出流管道与源文件路径接通,可追加数据 |
3. 字符输出流如何实现写出去的数据能换行
fw.write(“\r\n”)
4. 字符输出流如何实现写出去的数据能换行
flush()刷新数据
close()方法是关闭流,关闭包含刷新,关闭后流不可以继续使用了。