java与web开发中相对路径与绝对路径的使用

工程结构图.png
public static void main(String[] args) throws IOException {
    System.out.println(new File(".").getAbsolutePath());
    Properties pro = new Properties();
    //相对路径
    //InputStream input = new BufferedInputStream(new FileInputStream("src/text.properties"));
    //绝对路径
    InputStream input = new BufferedInputStream(new FileInputStream("D:/stsworkspace/utils/src/text.properties"));
    pro.load(input);
    Iterator<String> it=pro.stringPropertyNames().iterator();
    while(it.hasNext()){
    String key=it.next();
    System.out.println(key+":"+pro.getProperty(key));
    }
    input.close();
}

相对路径

java IO会默认定位到文件的根目录即:D:/stsworkspace/utils,以此的相对路径来找到text.properties这个文件下面就是src/text.properties。

那么JVM会找到路径D:/stsworkspace/utils/src/text.properties,这里为什么src/text.properties前面没有"/",?

"(无)","/","./","../"区别

1.(无)开头表示当前目录下的
2.(/)开头的目录表示该目录为根目录的一个子目录
3.(./)开头的目录表示该目录为当前目录(当前目录所在的目录)的一个子目录
4.(../)开头的目录表示该目录为当前目录的父目录

绝对路径

文件真实存的路径,本地硬盘中路径

web开发中的使用

在Web开发中尽量使用绝对路径,前一段路径无论是用的Windows或Linux开发,都可以利用 ServletActionContext.getServletContext().getRealPath(path); 来获取!

案例

proeperties文件结构

在uitls类中读取该路径下的文件

public class ConfigManager {
private static final Logger logger = LoggerFactory.getLogger(ConfigManager.class);
private static ConfigManager configManager;
// 读取属性文件
private static Properties properties;

/**
 * 在构造器中初始化读取properties文件
 */
private ConfigManager() {
    String configManager = this.getClass().getResource("").getPath();
    logger.info("configManager:-------" + configManager);
    String path = configManager.substring(0, configManager.indexOf("WEB-INF")) + "WEB-INF/db.properties";
    properties = new Properties();
    try {
        InputStream in = new BufferedInputStream(new FileInputStream(path));
        //InputStream in = new BufferedInputStream(new FileInputStream("src/main/webapp/WEB-INF/db.properties"));
        properties.load(in);
        in.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

在servelet中读取文件

方法一:

String path = getServletContext().getRealPath("");
Properties config = new Properties();
InputStream in = new FileInputStream(path+"/WEB-INF/db.properties");
config.load(in);

方法二:

Properties config = new Properties();
InputStream in = this.getServletContext().getResourceAsStream("/WEB-INF/db.properties");
config.load(in);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,833评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,122评论 6 342
  • jHipster - 微服务搭建 CC_简书[https://www.jianshu.com/u/be0d56c4...
    quanjj阅读 4,260评论 0 2
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,487评论 18 399
  • 一. Java基础部分.................................................
    wy_sure阅读 9,284评论 0 11

友情链接更多精彩内容