`
have_life
  • 浏览: 151423 次
社区版块
存档分类
最新评论

深度遍历目录

    博客分类:
  • java
阅读更多
深度遍历目录,读取properties文件

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Properties;
import java.util.Map.Entry;

import org.apache.log4j.Logger;
/**
 * 在service中想获得action对应的package.properties中一个英文子串对应的中文
 * 如:black.list.delete.ok={0}黑名单删除成功!
 * 
 * @author chenhuiting
 * @version 4.2.0
 */
public class LocalTextTools {

	private static final Logger logger = Logger.getLogger(LocalTextTools.class);
	private static final String propertiesFileName = "package.properties";
	private static final String JOIN_REGEX = "#"; 
	private static Map<String, String> properties = new HashMap<String, String>();
	
	static {
		try {
			init();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	private static void init() throws FileNotFoundException, IOException{
		String basePath = LocalTextTools.class.getResource("/").getPath();
		System.out.println(basePath);
		File baseDir = new File(basePath);
		LinkedList<File> stack = new LinkedList<File>();
		stack.add(baseDir);
	
		while (!stack.isEmpty()) {
			File file = stack.remove();
			if (file.isDirectory()) {
				File[] subFiles = file.listFiles();
				for (File subFile : subFiles) {
					if (subFile.isDirectory()){
						stack.add(subFile);
					} else if (subFile.getName().equals(propertiesFileName)) {
						String packagePathStr = subFile.getPath();
						packagePathStr = packagePathStr.replaceFirst("^.*classes\\\\", "").replaceAll(propertiesFileName, "").replaceAll("\\\\", ".");
						if (packagePathStr.lastIndexOf(".") == packagePathStr.length() - 1) {
							packagePathStr = packagePathStr.substring(0, packagePathStr.length() - 1) + JOIN_REGEX;
						}
						Properties proObj = new Properties();
						proObj.load(new FileInputStream(subFile));
						for(Entry<Object, Object> entry : proObj.entrySet()){
							String key = entry.getKey().toString();
							String value = entry.getValue().toString();
							properties.put(packagePathStr + key, value);
						}
					}
				}
			}
		}
	}
	
	/*
	 * 这里的key指在properties文件中的key
	 * packagePath指propertie文件的那级package目录
	 * 如,com.baidu.union.cpro.web.admin下的package.properties中, black.list.delete.ok={0}黑名单删除成功!
	 * packagePath=com.baidu.union.cpro.web.admin
	 * key=black.list.delete.ok 
	 * */
	public static String getText(String packagePath, String key, Object... obj){
		int i = 0; 
		String result = properties.get(packagePath + JOIN_REGEX + key);
		if (obj != null){
			for (Object object : obj){
				result = result.replace("{"+ i +"}", object.toString());
				i++;
			}
		}
		return result;
	}
	
	/*
	 * 这里的key指在properties文件中的key
	 * packagePath指propertie文件的那级package目录
	 * 如,com.baidu.union.cpro.web.admin下的package.properties中, black.list.delete.ok={0}黑名单删除成功!
	 * packagePath=com.baidu.union.cpro.web.admin
	 * key=black.list.delete.ok 
	 * */
	public static String getText(String packagePath, String key){
		return properties.get(packagePath + JOIN_REGEX + key);
	}
}
分享到:
评论

相关推荐

    易语言非子程序嵌套实现遍历目录源码

    值得注意的是,虽然题目要求不使用子程序,但为了实现深度遍历(即遍历所有子目录的子目录),通常需要递归,这在易语言中通常表现为子程序。不过,我们可以通过使用结构化的方式(如“堆栈”数据结构)来避免使用...

    java 遍历文件目录

    例如,使用`Files.walk()`方法可以方便地深度遍历目录及其所有子目录: ```java Path startPath = Paths.get("path/to/directory"); try (Stream&lt;Path&gt; stream = Files.walk(startPath)) { stream.forEach(path -&gt;...

    C++ 遍历目录的代码实现

    通过调用`GetFiles()`和`GetDirectories()`在子目录上,我们可以实现深度遍历整个文件系统树: ```cpp void TraverseDirectory(DirectoryInfo^ dir) { for each (FileInfo^ file in dir-&gt;GetFiles()) { // 处理...

    批处理遍历目录,取文件

    例如,如果目录结构复杂,可以通过递归函数实现深度遍历。同时,为了安全起见,可以考虑使用`passive`模式进行FTP连接,以避免防火墙或NAT设备的问题。 为了实现这个功能,你需要创建一个批处理脚本,其中包含上述...

    遍历文件夹自动生成目录树

    在Java中,遍历目录树可以这样实现: ```java import java.io.File; public class DirectoryTraversal { public static void traverse(File startPath) { if (startPath.isDirectory()) { String[] children = ...

    递归遍历目录并生成树

    在IT领域,尤其是在Windows开发中,经常需要处理文件系统操作,如遍历目录结构并以图形化的方式展示出来。在给定的标题“递归遍历目录并生成树”中,涉及的核心技术是递归算法和Windows API的使用,特别是与文件系统...

    易语言非递归算法遍历目录

    在编程领域,遍历目录是一项常见的任务,尤其在处理大量文件和目录时,效率尤为重要。易语言是一种中国本土开发的编程语言,它以其简洁的语法和面向初学者的设计而受到欢迎。本文将深入探讨易语言中如何使用非递归...

    java 对文件夹目录进行深度遍历实例代码

    在Java编程语言中,对文件夹目录进行深度遍历是一个基础且常见的操作,它主要用于列出目录树下的所有文件和子目录。深度遍历(又称深度优先遍历)是指沿着树的深度遍历树的节点,尽可能深地搜索树的分支,当节点v的...

    nokia_sms_reader

    该程序的核心功能在于深度遍历目录。在计算机科学中,深度优先搜索(DFS)是一种遍历或搜索树或图的算法,它沿着树的分支尽可能深地搜索,直到达到叶节点或满足某种条件为止。在这个应用中,DFS被用来逐级查找手机...

    java 实现分页目录查询.zip

    为了实现分页查询,`FileUtil`可能会包含一个递归函数,用于深度遍历目录,收集所有文件信息,并将这些信息传递给`FileMap`进行处理。递归是关键,因为它能确保无论目录结构多么复杂,都能正确地获取所有子目录和...

    Linux 遍历目录

    在Linux操作系统中,遍历目录是一项基础且至关重要的任务,尤其对于系统管理员和开发者来说,了解如何有效地遍历和操作文件系统是必备技能。Linux是一个类UNIX系统,其文件系统结构遵循一种层次化的树状模型,从根...

    易语言源码非递归算法遍历目录.7z

    在"易语言源码非递归算法遍历目录.7z"这个压缩包中,包含的是使用易语言编写的源代码,用于实现一种非递归算法来遍历目录结构。非递归算法不同于传统的递归方式,递归通常会通过函数自我调用来处理目录树,而这种非...

    网站目录遍历软件

    例如,他们可能会尝试使用“../”或“..%2f”等符号来“向上”遍历目录结构,以查看不应公开的系统文件或敏感数据。 2. **网站扫描**:网站扫描是使用自动化工具来检测网站的漏洞、弱点和配置错误的过程。它包括了...

    vb 遍历 目录

    在VB(Visual Basic)编程中,遍历目录是一项常见的任务,尤其在处理文件系统操作时。这涉及到访问和处理文件夹及其子文件夹中的文件。本文将深入探讨如何使用VB来遍历目录,并提供相关知识点。 一、VB的...

    web敏感目录、信息泄漏批量扫描脚本,结合爬虫、目录深度遍历。.zip

    遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施...

    运用API的快速文件搜索方法(7KB)...

    `Dir`函数虽然简单易用,但在处理大量文件或深度遍历目录结构时,速度相对较慢。API函数直接与操作系统交互,因此可以提供更快的搜索速度。 DRVSCAN.FRM可能是表单文件,展示了用户界面的设计,可能包含一个文本框...

    C#遍历指定目录(包括子目录)的递归

    下面我们将深入探讨C#中遍历目录的递归方法以及相关知识点。 1. **System.IO命名空间**:在C#中,`System.IO`命名空间提供了用于处理文件和目录的各种类和方法。`DirectoryInfo`和`FileInfo`类分别代表目录和文件...

    易语言搜索mp3例程

    易语言提供了“目录列举”或“深度遍历目录”等命令,可以递归地遍历指定路径下的所有子目录和文件,从而找到所有的MP3文件。 5. **条件判断与循环控制**: 在搜索过程中,会涉及到条件判断(如“如果...则...”)...

Global site tag (gtag.js) - Google Analytics