您的位置:首页 > 其它

项目中生成下载目录

2016-12-28 18:45 375 查看
项目中需要下载excel文件到目录,目录路径在环境变量中指明的属性文件中配置(方便修改而不需要改代码)。

项目代码结构如下:



Test测试类:

package createFolder;

public class Test {

public static void main(String[] args) {
String path = SettingUtil.getTestPath();
System.out.println("操作系统的类型为:"+System.getProperty("os.name"));
System.out.println("从属性文件中获取的目录为:" + path);
}

}

运行结果:

操作系统的类型为:Windows 7

从属性文件中获取的目录为:e:/nfsc/OETS/expired

SettingUtil关键类:

package createFolder;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Properties;

public class SettingUtil {

private static Properties constants;
private static final String TEST_CONF_PATH = "TEST_CONF_PATH";
static {
String confPath = System.getenv().get(TEST_CONF_PATH);//该方法得到系统环境变量的值
constants = new Properties();
try {
String path = confPath + "/testconfig.properties";
File file = new File(path);
InputStream in = new FileInputStream(file);
constants.load(in); //加载属性文件
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 根据配置文件中配置的内容得到存放路径(把路径放到配置文件中是因为方便更改)
* @return
*/
public static String getTestPath() {
String path = getPropertyBySystem("oets.path.root") + getProperty("oets.path.expired");
CsvUtil.checkDirectory(path);
return path;
}

/**
* 根据操作系统的类型(windows/unix)得到配置的根目录路径(不同操作系统对应不同目录)
* @param key
* @return
*/
private static String getPropertyBySystem(String key) {
String osname = System.getProperty("os.name").toLowerCase();//得到操作系统的类型
if (osname.contains("win")) {
String orgUrl = getProperty(key + ".win");
orgUrl = CsvUtil.checkExist(orgUrl);
return orgUrl;
}
return getProperty(key + ".unix");
}

private static String getProperty(String key) {
if (constants != null)
return constants.getProperty(key);
else
return null;
}

}


CvsUtil工具类:

package createFolder;

import java.io.File;

public class CsvUtil {

/**
* 判断配置路径中的盘符是否存在,如果不存在,尝试向上递增盘符查找,直到找到为止
*/
public static String checkExist(String orgUrl) {
String disk = orgUrl.substring(0, 2);
File file = new File(disk);
while (!file.exists()) {
disk = (char) (disk.charAt(0) + 1) + disk.substring(1);
file = new File(disk);
}
return disk + orgUrl.substring(2);
}

/**
* 判断文件夹是否存在,否则创建;参数为true的话删除历史文件
*
* @param filePath
* @param idDelHistoryFile
*/
public static void checkDirectory(String filePath) {
/**
* 判断文件夹是否存在
*/
File file = new File(filePath);
if (file.exists()) {
file.mkdirs();
}
}

}
属性文件存放路径:



属性文件内容:



属性文件环境变量配置:



相关知识点说明:

静态代码块:

1.静态块用于初始化类,为类的属性初始化。每个静态代码块只会执行一次。

2.静态代码块的执行顺序:(优先级从高到低)静态代码块>mian方法>构造代码块>构造方法。如果类中包含多个静态代码块,那么将按照"先定义的代码先执行,后定义的代码后执行"。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: