赞
踩
1.在学习本章之前,需要有这样几个方法需要学习:
//的到的是用户当前的工作目录,参数是一个关键字,还有很多这样的关键字,可以参见API
String path=System.getProperty("user.dir");
System.out.println(path);
现在自定义一个Log文件,叫做log.txt,存放在工程里面的目录中。
- public class Log {
- private PrintWriter log = null; // 日志输出流
- private static Log logFactory = new Log(); // 创建唯一的实例,使用的是单例模式
- /**
- * 返回唯一的实例
- */
- public static Log getInstance() {
- return logFactory;
- }
-
- /**
- * 初始化日志文件,同时 私有构造方法,防止外部对它进行实例化
- */
- private Log() {
- try {
- /*
- * 这样得到的是class文件的路径,而不是当前类文件的路径,所以要获得当前类文件的路径,这是错误的做法,
- * 目前还没有有效的方法获得当前java文件的路径。所以弃之不用。 String
- * logPath=Log.class.getResource("").toString().substring(6);
- * 创建路径和创建文件要分开,但这里得到的是已存在的路径。
- */
- String logPath = System.getProperty("user.dir");
- File logFile = new File(logPath, "log.txt");
- if (!logFile.exists()) {
- logFile.createNewFile();
- }
- System.out.println(logFile.toString());
- log = new PrintWriter(new FileOutputStream(logFile, true), true); // 建立日志输出流
- } catch (Exception e) {
- log = new PrintWriter(System.err);
- e.printStackTrace();
- System.out.println("初始化日志文件失败");
-
- }
- }
-
- /**
- * 将异常写入日志
- */
-
- public void writeLog(Throwable e, String msg) {
- // println方法是将内容打印在原先初始化使用的参数中,这里当然就是file文件了
- log.println(new Date() + ":" + msg);
- //这个方法是将异常打印到指定的输出流中间,就是log.txt中
- e.printStackTrace(log);
- }
-
- /**
- * 将文本信息写入日志
- */
- public void writeLog(String msg) {
- log.println(new Date() + ":" + msg);
- }
- }
下面来看配置文件是如何做到的:
配置文件可以用来存一些常用的一些值,可以用来存储一些不需要在数据库中间存储的值,操作起来相对方便。
大多数的配置文件都是以.property或者xml文件来结尾的,其实以什么何时结尾并不重要,只需是文本文件类型即可。现在,来以ini结尾来创建一个属性文件。
第一步是创建一个ini文件,注意在加载属性之前,要确保这个配置文件是存在的,如果不存在就需要创建。
- public class UtilProperties {
- private FileInputStream in; // 输入流
- private FileOutputStream out; // 输出流
- private Properties pro;
- private Log log = Log.getInstance(); // 建立日志输出对象
- // 设置文件的默认路径,不需要外部来更改。
- private String filePath = System.getProperty("user.dir") + "/property";
- private String fileName=filePath+ "/config.ini";
- public UtilProperties() {
- getFile();
- }
- private File createFile(String fileName) throws IOException {
- String logPath = fileName;
- File propertiesFilePath = new File(logPath);
- File propertiesFile = new File(logPath, "config.ini");
- if (!propertiesFilePath.exists()) {
- propertiesFilePath.mkdirs();
- }
- if (!propertiesFile.exists()) {
- propertiesFile.createNewFile();
- }
- return propertiesFile;
- }
-
- private void getFile() {
-
- try
-
- {
- File file = createFile(filePath);
- in = new FileInputStream(file);
- pro = new Properties();
- pro.load(in); // 加载属性文件,加载以后,才可以对属性文件写入值或者读取值,加载的是输入流,是读取文件
- in.close();
- } catch (FileNotFoundException e) {
- log.writeLog(e,"配置文件config.ini找不到!!");
- } catch (IOException e) {
- log.writeLog(e,"读取配置文件config.ini错误!!");
- }
- }
-
- /*
- * 列出所有配置文件的内容,打印在控制台上面,具体参见API
- */
- public void list() {
- pro.list(System.out);
- }
-
- /*
- * 指定配置项,返回该配置项的值
- *
- */
- public String getItemValue(String key) {
-
-
- return pro.getProperty(key);
- }
-
- /*
- * 将配置保存
- */
- public void setItemValue(String key, String value) {
- pro.setProperty(key, value);
- }
-
- /*
- * 保存配置文件,指出文件名及其路径,这一步才是真的将文件保存在配置文件中
- */
- public void saveFile() {
- try {
- File file = new File(this.fileName);
- out = new FileOutputStream(file);
- pro.store(out, "");
- out.close();
- } catch (FileNotFoundException e) {
- log.writeLog(e,"配置文件config.ini找不到!!!");
- } catch (IOException e) {
- log.writeLog(e,"配置文件config.ini写入错误!!");
- }
- }
-
- /*
- * 删除一个属性
- *
- */
- public void delete(String key) {
- pro.remove(key);
- }
-
- /*
- * 返回配置文件的路径
- */
- public String getFilePath() {
- return this.fileName;
- }
- }
分清哪些是私有方法,哪些是外部可以调用的方法。
测试,如何使用这些方法:
- public class TestDemo {
-
- public static void main(String[] args) {
-
- UtilProperties utilProperties = new UtilProperties();
- utilProperties.setItemValue("AAAA", "aaaa");
- utilProperties.setItemValue("BBBB", "bbbb");
- utilProperties.saveFile();
- String a = utilProperties.getItemValue("AAAA");
- System.out.println(a);
-
- }
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。