日志:
日志就是记录程序的运行轨迹,方便查找关键信息,也方便快速定位解决问题.那么如何存储程序的运行轨迹,肯定是使用文件呗,但具体的文件可能是txt,doc,html,excel,properties…
这一篇重点了解:
这一部分介绍怎么用java写和读取文件
第一步我们需要了解一个类,名字为Properties,这个类是一个工具类,他能和文件产生一些微妙的关系,我们可以把这个类,想象成眼镜,而我们操作的文件为报纸,对,看报纸需要戴眼镜!!!没错!!!
怎么写
public void write() {
//Properties是一个工具类,这个类能与文件产生一种奇妙的联系,可以想象这个类与文件就是眼镜与报纸的关系
//声明Properties的对象,可以看成一个眼镜
/*1*/Properties properties = new Properties();
/这个眼镜将来要看的文件将会有name=王小锤,age=18这两个属性及对应的属性值
/*2*/properties.setProperty("name", "王小锤");
/*3*/properties.setProperty("age", "18");
try {
//输出文件的位置,和(true)是否要追加内容,默认(false)不追加,看成一个报纸
/*4*/FileOutputStream inputStream = new FileOutputStream("src/wang.txt",true);
//将眼镜能看到的东西放在报纸里面
/*5*/properties.store(inputStream, "\n文件已经存储");
//将报纸折起来关闭
/*6*/inputStream.close();
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
/*7*/e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
/*8*/e.printStackTrace();
}
}
使用:
package fuxi_log.log;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class test {
public static void main(String[] args) {
//使用
write();
}
public static void write() {
//Properties是一个工具类,这个类能与文件产生一种奇妙的联系,可以想象这个类与文件就是眼镜与报纸的关系
Properties properties = new Properties();
properties.setProperty("name", "王小锤");
properties.setProperty("age", "18");
try {
FileOutputStream inputStream = new FileOutputStream("src/wang.txt",true);
properties.store(inputStream, "\n文件已经存储");
inputStream.close();
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
刷新一下:
打开wang.txt
#\u6587\u4EF6\u5DF2\u7ECF\u5B58\u50A8
#Mon Apr 15 13:02:31 CST 2019
age=18
name=\u738B\u5C0F\u9524因为字符集不同,wang.txt采用的是Unicode编码,所以汉字会变成这个样子
怎么读取:
public static void read() {
//声明一个眼镜
/*1*/Properties properties = new Properties();
try {
//告诉java这有一个文件
/*2*/InputStream inputStream = new FileInputStream("src/wang.txt");
//眼镜看到这个文件
/*3*/properties.load(inputStream);
//开始读取文件中的属性并赋值给name
/*4*/String name = properties.getProperty("name");
//显示name
System.out.println(name);
String age = properties.getProperty("age");
System.out.println(age);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
使用
package fuxi_log.log;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class test {
public static void main(String[] args) {
write();
read();
}
public static void write() {
Properties properties = new Properties();
properties.setProperty("name", "王小锤");
properties.setProperty("age", "18");
try {
FileOutputStream inputStream = new FileOutputStream("src/wang.txt",true);
properties.store(inputStream, "\n文件已经存储");
inputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void read() {
Properties properties = new Properties();
try {
InputStream inputStream = new FileInputStream("src/wang.txt");
properties.load(inputStream);
String name = properties.getProperty("name");
System.out.println(name);
String age = properties.getProperty("age");
System.out.println(age);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
控制台显示:
王小锤
18