文件路径读取内容

直接看代码
;

import java.io.File;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.travelzen.framework.config.tops.TopsConfEnum.ConfLocation;
import com.travelzen.framework.config.tops.TopsConfEnum.ConfScope;
import com.travelzen.framework.config.tops.TopsConfEnum.ConfSeqType;
import com.travelzen.framework.config.tops.TopsConfReader;
import com.travelzen.framework.core.exception.PropertyException;
import com.travelzen.framework.core.util.SystemUtil;
import com.travelzen.framework.core.util.TZUtil;

/**
 *  把相对路径解析到实际路径
 * @author liang.wang
 *
 */

public class TopsConfigPathResolver {
	private static final Logger logger = LoggerFactory.getLogger(TopsConfigPathResolver.class);
	public static String BASE_LOCALHOST_PATH;
	private static String BASE_IP_PATH;
	private static final String ZKSERVICE_FILENAME = "properties/zkService.properties";

	static {

		try {
			BASE_LOCALHOST_PATH = LocalPropertiesLoader.getPropertyFromResource("properties/confbase.properties", "conf_base_path");// "/opt/conf/tz-data";
			BASE_IP_PATH = LocalPropertiesLoader.getPropertyFromResource("properties/confbase.properties", "ip_path");// "/opt/conf/tz-data";

			if (SystemUtil.isWindows()) {
				BASE_LOCALHOST_PATH = "D:" + BASE_LOCALHOST_PATH.replace("/", "\\");
				BASE_IP_PATH = "D:" + BASE_IP_PATH.replace("/", "\\");

			}
		} catch (Exception e) {
			logger.error(e.getMessage(), e);
		}
	}

	public static String getBaseLocalHostPath() {
		return BASE_LOCALHOST_PATH;
	}

	public static String getBaseZookeeperPath() {
		return LocalPropertiesUtil.getPropertyFromLocalFile(TopsConfigPathResolver.getZKservicePath(), "zkBasePath");
	}

	public static String getTopsIpPath() {
		return BASE_IP_PATH;
	}

	public static String getGlobalName() {
		return "global";
	}

	public static String getSeqPath(ConfSeqType type) {
		if (TZUtil.isEmpty(type))
			throw PropertyException.instanceConfNotFoundException("ConfSeqType is null");
		if (type == ConfSeqType.IP) {
			return TopsConfigPathResolver.getBaseZookeeperPath() + File.separator + TopsConfigReaderUtil.getApplicationName() + File.separator + TopsConfigReaderUtil.getLocalIP();
		} else {
			return TopsConfigPathResolver.getBaseZookeeperPath() + File.separator + TopsConfigReaderUtil.getApplicationName();
		}
	}

	/**
	 * 获得主机基本路径
	 * 
	 * @param location
	 * @return
	 */
	public static String getBaseHostPath(ConfLocation location) {
		if (TZUtil.isEmpty(location)) {
			throw new RuntimeException();
		}
		if (location == ConfLocation.ZK)
			return getBaseZookeeperPath();
		if (location == ConfLocation.LOCALHOST)
			return getBaseLocalHostPath();
		return getBaseLocalHostPath();
	}

	/**
	 * 必须在文件系统中
	 * 
	 * @return
	 */
	public static String getZKservicePath() {
		return getBaseLocalHostPath() + File.separator + getGlobalName() + File.separator + ZKSERVICE_FILENAME;
	}

	public static String getAppConfigPath(String fileName, ConfScope confScope, ConfLocation location) {

		String sp = File.separator;
		if (location == ConfLocation.ZK) {
			sp = "/";
		}

		if (TZUtil.isEmpty(fileName) || TZUtil.isEmpty(confScope)) {
			throw new RuntimeException();
		}
		String path = null;
		String appName = null;
		switch (confScope) {
		case G: // 全局
				// /opt/conf/tz-data/${appname}/sampleconf.xml
			appName = TopsConfigReaderUtil.getApplicationName();
			path = getBaseHostPath(location) + sp + appName + sp + fileName;
			break;
		case M: // /opt/conf/tz-data/${appname}/${ip}/sampleconf.xml
			appName = TopsConfigReaderUtil.getApplicationName();
			path = getBaseHostPath(location) + sp + appName + sp + TopsConfigReaderUtil.getLocalIP() + sp + fileName;
			break;
		case GA:
			// ConfScope.GA
			// ${appname}/3/sampleconf.xml
			appName = TopsConfigReaderUtil.getApplicationName();
			path = getBaseHostPath(location) + sp + appName + sp + TopsConfReader.getAppSeq() + sp + fileName;
			break;
		case MA:
			// ConfScope.MA
			// ${appname}/{$ip}/3/sampleconf.xml
			appName = TopsConfigReaderUtil.getApplicationName();
			path = getBaseHostPath(location) + sp + appName + sp + TopsConfigReaderUtil.getLocalIP() + sp + TopsConfReader.getIPSeq() + sp + fileName;
			break;
		case U:
			// ConfScope.U
			// ${appname}/${ip}/${appid}/sampleconf.xml
			appName = TopsConfigReaderUtil.getApplicationName();
			path = getBaseHostPath(location) + sp + appName + sp + TopsConfigReaderUtil.getLocalIP() + sp + TopsConfReader.getAppid() + sp + fileName;
			break;
		case R:
			path = getBaseHostPath(location) + sp + getGlobalName() + sp + fileName;
			break;
		default: // 默认为R
			path = getBaseHostPath(location) + sp + getGlobalName() + sp + fileName;
			break;
		}

		logger.info("path:{}, scope:{}", path, confScope);
		return path;
	}
}

其实,这里主要的还是zookeeper读取配置文件信息,但是这里有一点的要注意的是,getTopsIpPath().是将配置文件中的/data/etc/ip 文件配置的本机IP 给写入进去.(写入到zookeeper不是这里主要的讲的内容)

这里大概有几个方法,当然初始化的时候主要是读取本地的IP和路径(主要是),如下

static {

		try {
			BASE_LOCALHOST_PATH = LocalPropertiesLoader.getPropertyFromResource("properties/confbase.properties", "conf_base_path");// "/opt/conf/tz-data";
			BASE_IP_PATH = LocalPropertiesLoader.getPropertyFromResource("properties/confbase.properties", "ip_path");// "/opt/conf/tz-data";

			if (SystemUtil.isWindows()) {
				BASE_LOCALHOST_PATH = "D:" + BASE_LOCALHOST_PATH.replace("/", "\\");
				BASE_IP_PATH = "D:" + BASE_IP_PATH.replace("/", "\\");

			}
		} catch (Exception e) {
			logger.error(e.getMessage(), e);
		}
	}
主要的设置读取对应的配置文件:还是最后的getAppConfigPath(String fileName, ConfScope confScope, ConfLocation location) ,主要通过是所代表的字母confScope()R,G等所对应的文件路径,之后就是文件名字,和所在的相对路径名字.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值