package com.huawei.ngbss.esb;
import java.io.File;
import java.io.FileInputStream;
import java.util.Enumeration;
import java.util.Properties;
import java.util.TimerTask;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class FileListener extends TimerTask
{
private File file=null;
private long lastModified=0;
private Properties prop=new Properties();
private boolean fileFlag=true;
public boolean isFileFlag()
{
return fileFlag;
}
public void setFileFlag(boolean fileFlag)
{
this.fileFlag = fileFlag;
}
public Logger getLogger()
{
return logger;
}
public void setLogger(Logger logger)
{
this.logger = logger;
}
private Logger logger=Logger.getLogger(FileListener.class);
FileListener(String filePath)
{
if(filePath!=null)
{
this.file=new File(filePath);
if(!file.isFile())
{
logger.error("This file["+filePath+"]does not exist,please check it.");
return;
}
if(this.file.getName().endsWith(".properties"))
{
this.fileFlag=true;
}
else if(this.file.getName().endsWith(".xml"))
{
this.fileFlag=false;
}
else
{
logger.info("no thing to do......");
}
}
}
private boolean isFileUpdated()
{
if(this.fileFlag)
{
long lastUpdatedTime=file.lastModified();
//if this file has upate the lastUpdateTime will > 0
return lastUpdatedTime >this.lastModified;
}
else
{
return false;
}
}
public void loadFile()
{
if(this.fileFlag)
{
loadProperties();
}
else
{
}
}
public void loadProperties()
{
//set the lastModfied
this.lastModified=file.lastModified();
FileInputStream in=null;
try
{
logger.info("The Properties file["+getPath()+"] loading......");
in=new FileInputStream(file);
prop.load(in);
//print all properties
//get properties all property KeyNames
Enumeration<?> enu=prop.propertyNames();
StringBuffer buf=new StringBuffer();
while(enu.hasMoreElements())
{
String key=(String) enu.nextElement();
buf.append(" key: ").append(key).append(", value: ")
.append(prop.getProperty(key)).append("\n");
}
logger.info(buf.toString());
logger
.info("The properties file[" + getPath()
+ "] load complete.");
if("log4j.properties".equalsIgnoreCase(getFileName()))
{
PropertyConfigurator.configure(getProperties());
}
}
catch (Exception e)
{
logger.error("The file[" + getPath()
+ "] doesn't exist, reload file unsuccess.");
e.printStackTrace();
}
}
public void run()
{
if(isFileUpdated() && fileFlag)
{
logger.info("the Properties file["+getPath()+"] was modified.");
loadFile();
}
else if(isFileUpdated() && !fileFlag)
{
loadFile();
}
}
}
分享到:
相关推荐
`String.xml`文件是Android系统用来存储应用中所有文本资源的主要方式,它使得开发者能够方便地管理和国际化应用的文本内容。本工具就是专为处理`String.xml`与Excel表格之间的相互转换而设计的,方便开发者进行批量...
在IT行业中,尤其是在Android或者iOS应用开发中,`String.xml` 文件是用于管理应用程序中所有字符串资源的关键文件。它允许开发者集中地定义、管理和翻译应用中的文本,提高代码的可维护性和可扩展性。本工具则专注...
为了方便管理这些多语言资源,Android使用`String.xml`文件来存储应用中的文本字符串。然而,手动编辑这些XML文件既耗时又容易出错,尤其是在处理大量文本时。这时,就需要借助一些工具进行`String.xml`与Excel之间...
《String.xml到Excel翻译工具详解》 在移动应用开发中,多语言支持是必不可少的一环。为了方便开发者管理和翻译应用程序中的字符串资源,一种常见的做法是将这些字符串存储在XML文件中,通常命名为“String.xml”。...
3. `GetXmlDeclare(string &strVersion, string &strStandalone, string &strEncoding)`:这个函数用于获取XML文件的声明部分,包括版本号(Version)、是否独立(Standalone)以及编码(Encoding)信息,并将这些...
1. **XML基础**:`string.xml`文件是基于XML格式的,XML是一种可扩展标记语言,用于结构化数据的存储和传输。了解XML的基本语法和元素结构对于理解和处理这类文件至关重要。 2. **Android资源文件**:在Android应用...
std::string encryptXML(const std::string& xml, const std::string& key) { // 实现加密逻辑 } // 解密函数 std::string decryptXML(const std::string& encryptedXml, const std::string& key) { // 实现...
在这个场景中,我们关注的是如何使用DOM4J以String的形式读取XML内容,然后将String的值赋给XML中的特定节点,最后将更新后的内容写回XML文件。下面我们将详细探讨这一过程。 1. **解析XML到String** 要将XML文件...
std::string encrypt(const std::string& xml, const unsigned char* key, const unsigned char* iv) { // ... 加密过程 ... } // 解密函数 std::string decrypt(const std::string& encrypted, const ...
dom4j的操作 ,dom4j转化为String,String转化为xml
利用pugixml 转化xml为string
本篇文章将详细讲解如何将string类型的XML字符串转换为JSON字符串,并介绍相关的技术知识。 首先,理解XML和JSON的基本结构是至关重要的。XML是一种树形结构的标记语言,通过标签来定义元素和属性,例如: ```xml ...
XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,它以其结构化、可读性强的特点被广泛应用于软件开发中的配置文件和日志记录。TinyXML是一个小型、开源的C++库,专门用于解析和生成XML文档。...
std::string xmlPath = tempDir + "word/document.xml"; std::string txtPath = "output.txt"; // 解压缩DOCX文件 decompressDocx(docxPath, tempDir); // 提取并保存文本 extractText(xmlPath, txtPath); ...
XMLDocument(const std::string& filePath); ~XMLDocument(); private: TiXmlDocument doc; }; ``` 2. **加载和保存文件**:`LoadFromFile`和`SaveToFile`方法用于加载XML文件到内存和保存内存中的XML到文件。 ...
### WebService接口接收XML与String代码解析 #### 一、概述 在现代软件开发中,WebService作为一种基于HTTP协议的应用程序接口(API),广泛应用于不同系统之间的数据交换与服务调用。本篇文章将根据提供的代码示例...
在Android应用开发中,资源管理是非常重要的一部分,其中string.xml文件用于存储应用程序中使用的文本字符串。这不仅方便了代码的维护,还支持多语言环境。本文将深入探讨Android string.xml中的替换方法,以及如何...
在Android开发中,`string.xml` 文件是应用中管理字符串资源的重要部分,它允许开发者集中存储和管理应用程序中的文本内容,提高代码可读性和维护性。`%1$s` 和 `%d\%` 是在 `string.xml` 文件中常用的格式化符号,...
在Android开发中,处理XML数据是一项常见的任务,无论是从网络获取还是本地存储。"SAX解析String类型XML字符串"就是一种高效且...在处理StringXml压缩包文件时,可以按照这个思路进行操作,实现XML数据的解析和显示。
### Android String.xml标签在java代码中的引用 #### 概述 在Android开发中,为了方便进行国际化处理以及统一管理应用内的字符串资源,开发者通常会将应用程序中的文本信息存放在`res/values/strings.xml`文件中。...