美文网首页
java与web开发中相对路径与绝对路径的使用

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

作者: 巧克力er | 来源:发表于2017-11-06 19:54 被阅读0次
    工程结构图.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);

    相关文章

      网友评论

          本文标题:java与web开发中相对路径与绝对路径的使用

          本文链接:https://www.haomeiwen.com/subject/ijplmxtx.html