通过ServletContext获得工程根目录路径、读取文件以及获得classpath目录下的文件

HttpServletDemo02.java:

package com.fl.servlet;

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Properties;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HttpServletDemo02 extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

    }
    @Override
    public void init(ServletConfig config) throws ServletException {
        ServletContext sc = config.getServletContext();
        //不管根目录下是否有temp.txt,在这里不会检测。
        String path = sc.getRealPath("temp.txt");
        //不管根目录下有没有upload目录,这里也不会报错,而是会
        //直接输出根目录的完整目录后,再在后面加上upload。
        String path1 = sc.getRealPath("/upload");
        //因此一般getRealPath用于获取根目录路径。
        String path2 = sc.getRealPath("/");
        System.out.println(path);
        System.out.println(path1);
        System.out.println(path2);
        //这里通过完整路径,把文件放入流中。
        InputStream in = sc.getResourceAsStream("/WEB-INF/temp.txt");
        Properties prop = new Properties();

        try {
            prop.load(in);
            System.out.println(prop.get("key"));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <servlet>
    <servlet-name>HttpServletDemo02</servlet-name>
    <servlet-class>com.fl.servlet.HttpServletDemo02</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>HttpServletDemo02</servlet-name>
    <url-pattern>/servlet/HttpServletDemo02</url-pattern>
  </servlet-mapping>
</web-app>

temp.txt:

    key=dddd;

输出结果:

获得classpath目录下的文件:

下面有两种方法:

InputStream in = sc.getResourceAsStream("/WEB-INF/classes/temp.txt");//这种方式不太好
InputStream in = this.getClass().getClassLoader().getResourceAsStream("temp.txt");//类加载方式,不依赖ServletCntext,任何类都可以获得classpath下的文件。

原文地址:https://www.cnblogs.com/cq0143/p/10668331.html

时间: 2024-10-24 22:41:02

通过ServletContext获得工程根目录路径、读取文件以及获得classpath目录下的文件的相关文章

oc 文件操作,查看目录下所有文件包括子文件夹内包含的所有文件,循环遍历递归

FileManager.m #import "FileManager.h" @implementation FileManager + (void)showFiles:(NSString *)path;{ // 1.判断文件还是目录 NSFileManager * fileManger = [NSFileManager defaultManager]; BOOL isDir = NO; BOOL isExist = [fileManger fileExistsAtPath:path i

Java中删除文件、删除目录及目录下所有文件

private static boolean deleteDir(File dir) { if (dir.isDirectory()) { String[] children = dir.list(); //递归删除目录中的子目录下 for (int i=0; i<children.length; i++) { boolean success = deleteDir(new File(dir, children[i])); if (!success) { return false; } } }

iOS案例:读取指定目录下的文件列表

// // main.m // 读取指定目录下的文件列表 // // Created by Apple on 15/11/24. // Copyright © 2015年 Apple. All rights reserved. // /* *读取指定目录下的文件列表 */ #import <Foundation/Foundation.h> void myQuickMethod(); int main(int argc, const char * argv[]) { //文件操作对象 NSFil

Python 读取某个目录下的文件

读取某个目录下的文件,如'/Users/test/test_kmls'目录下有test1.txt.test2.txt. 第一种方法读出的all_files是test1.txt.test2.txt 1 import os 2 3 kml_path=os.path.abspath('/Users/test/test_kmls') 4 all_files=os.listdir(kml_path) 5 for file in all_files: 6 print file 第二种方法可以获得文件的全路径

Myeclipse中文件已经上传到服务器目录下,文件也没有被占用,但是页面中无法读取和使用问题的解决方法

这个问题是由于Myeclipse中文件不同步引起的.在Myeclipse中,工程文件是由Myeclipse自动扫描添加的,如果在外部修改了工程目录中的文件但又关闭了自动刷新功能,则会引起文件不同步.此外,在外部没有修改Myeclipse工程中的文件也有可能引起该问题. 解决方法: 有两种解决方法: 1)手动刷新.即在Myeclipse的工程目录中,右键refresh(或者按下F5). 2)配置Myeclipse的选项: a)Myeclipse启动时,刷新workspace,即勾选:window-

AssetsUtils【读取assets、res/raw、./data/data/包名/目录下的文件】

版权声明:本文为博主原创文章,未经博主允许不得转载. 前言 封装了以下功能: 1.读取assets目录下的资源html.文件.图片,将文件复制到SD卡目录中: 2.读取res/raw目录下的文件内容: 3.读写./data/data/包名/下的文件: 效果图 代码分析 最常用的方法:getStringFromAssert(Context mContext, String assetsFilePath)[读取assets目录中的文件字符串] 使用步骤 一.项目组织结构图 注意事项: 1.  导入类

php读取目录下的文件

工作需要写了一个读取指定目录下的文件,并显示列表,点击之后读取文件中的内容 高手拍砖,目录可以自由指定,我这里直接写的是获取当前文件目录下面的所有文件 </pre> <?php /** * 读取指定目录下面的文件内容 * @author Administrator * */ class Catlog { /** * 要读取的目录 * @var string */ private $dir; /** * 文件名中必须存在 * @var string */ private $str = 'p

java读取某个目录下所有文件并通过el表达式将相关文件信息展示出来,js提供页面搜索及查看下载功能

从服务器上读取某个目录下的文件  将文件名 文件修改日期   及文件 大小展示在前台  并可以查看及下载 第一步:读取文件目录下的文件,并将文件按时间由大到小排列 public ArrayList<File> getLogs() { // TODO Auto-generated method stub ArrayList<File>  tomcatLogs = new ArrayList<File>(); File path = new File(""

php实现目录下的文件读取功能

<?php //这里实现 某个文件下的所有图片,并列出来! header("Content-type:text/html;charset=utf8"); $handle=opendir('.'); echo "目录 handle: $handle\n"; echo "档案:\n"; while ($file = readdir($handle)) { if(@eregi("[_\.0-9a-z-]+[\.]+gif$",