Servlet总结二(文件路径)

前言

前面我们说过ServletContext表示的是web容器中的上下文,下面我们也是用到ServletContext中的方法读取文件

读取WebRoot文件下的文件

我们知道当我们将项目部署到Tomcat服务器中时,项目中的文件路径其实就是在Tomcat中的文件路径,所有的项目都是存储在webapps下的,我们可以看到webaapps下有两个文件夹(WEB-INF,META-INF),这两个其实就是项目中webRoot下的两个文件夹。

  • public String getRealPath(String path) 为给定虚拟路径返回包含实际路径的String
    //获取ServletContext的对象
ServletContext context = this.getServletContext();
//context.getRealPath("/")获取项目的根目录的绝对路径(webRoot的绝对路径)
//得到了webRoot的绝对路径,下面只要再接着写其他文件的路径即可
File file = new File(context.getRealPath("/")
+ "\\WEB-INF\\lib\\file.txt");
if (file.exists()) {
System.out.println("文件存在");
} else {
System.out.println("文件不存在,现在我们创建一个");
try {
file.createNewFile();// 创建一个新的文件
} catch (IOException e) {
e.printStackTrace();
}
}
  • InputStream getResourceAsStream(String path) 根据传入的路径文件,返回一个InputStream对象
        // 第一个"/"是表示webRoot的根目录,通过这个函数可以不用指定绝对路径就可以构造一个输入字节流
InputStream stream = context
.getResourceAsStream("/WEB-INF/lib/file.txt");
// 通过InputStreamReader将字节流转换为字符流,然后创建缓冲字符流读取文件
BufferedReader reader = new BufferedReader(
new InputStreamReader(stream));
try {
System.out.println(reader.readLine());
} catch (IOException e) {
System.out.println("文件没有成功读取");
e.printStackTrace();
}

注意:这个函数中的path传入的第一个"/"就表示根目录,在eclipse项目中表示webRoot的绝对路径,在Tomcat下的webapps表示项目名称的绝对路径,因此在下面的WEB-INF,META-INF文件夹下的文件只需要在后面继续添加即可

读取src下的class文件

前面我们获取的webRoot下的文件路径,但是如果我们想要获取src下的文件,那么我们要如何获取呢。

我们仔细看看Tomcat下的文件,可以发现在每一个WEB-INF下都有一个classes,这个就是相当于Tomcat下的src,因此我们利用上面得到的路径稍加修改就可以轻易的得到其中的文件路径

下面我们读取src文件夹下的file.txt中的内容,代码如下:

        // 获取ServletContext对象
ServletContext context = this.getServletContext();
// 这个是获取项目下的src文件夹下的file.txt文件
File file = new File(context.getRealPath("/")
+ "\\WEB-INF\\classes\\file.txt");
BufferedReader reader = null;
if (file.exists()) {
System.out.println("文件存在,现在可以读取");
try {
// 创建缓冲流对象,实现读取文件
reader = new BufferedReader(new FileReader(file));
try {
// 输出第一行内容
System.out.println(reader.readLine());
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
System.out.println("文件不存在");
} finally {
if (reader != null) {
try {
reader.close(); // 如果reader不是空,就关闭
} catch (IOException e) {
System.out.println("文件关闭失败");
}
}
} } else {
System.out.println("文件不存在,现在开始创建一个");
try {
file.createNewFile();// 创建一个
} catch (IOException e) {
System.out.println("没有创建成功");
}
}

Servlet总结二(文件路径)的更多相关文章

  1. JAVA 取得当前目录的路径/Servlet/class/文件路径/web路径/url地址

    在写java程序时不可避免要获取文件的路径...总结一下,遗漏的随时补上 1.可以在servlet的init方法里 String path = getServletContext().getRealP ...

  2. C# 一些知识点总结(二)_路径类,编码类,文件类...

    Path 类:路径类path.GetFileName("文件路径")//获取完整文件名,包括文件名和文件拓展名Path.GetFileNameWithoutExtension(&q ...

  3. java web项目中 获取resource路径下的文件路径

    public GetResource{ String path = GetResource.class.getClassLoader().getResource("xx/xx.txt&quo ...

  4. javaweb学习之Servlet开发(二)

    javaweb学习总结(六)--Servlet开发(二) 一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个< ...

  5. Servlet上传文件

    Servlet上传文件 1.准备工作 (1)利用FileUpload组件上传文件,须要到apache上下载commons-fileupload-1.3.1.jar 下载地址:http://common ...

  6. Java文件路径

    几大常用的方法 Class.getResource("")    返回的是当前Class这个类所在包开始的位置 getClassLoader().getResource(" ...

  7. Java Web学习总结(3)Servlet(二)

    一,Servlet访问URL映射配置 由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml ...

  8. 专攻知识小点——回顾JavaWeb中的servlet(二)

    续前篇... ServletConfig对象 Servlet的配置对象,ServletConfig对象作用域只能在一个Servlet类中使用.每个Servlet类都维护一个ServletConfig对 ...

  9. Oracle数据库文件路径变更

    环境:RHEL 6.4 + Oracle 11.2.0.3 情景一:只是部分普通数据文件迁移,可以在线操作. 1.将对应表空间offline,移动数据文件到新路径 2.数据文件alter databa ...

随机推荐

  1. javascript之DOM文档对象模型编程的引入

    /* DOM(Document Object Model) 文档对象模型 一个html页面被浏览器加载的时候,浏览器就会对整个html页面上的所有标签都会创建一个对应的 对象进行描述,我们在浏览器上看 ...

  2. 【Unity Shaders】Reflecting Your World —— 在Unity3D中创建Cubemaps

    本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...

  3. jsp自动编译机制

    总的来说,Jasper的自动检测实现的机制比较简单,依靠某后台线程不断检测JSP文件与编译后的class文件的最后修改时间是否相同,若相同则认为没有改动,但倘若不同则需要重新编译.实际上由于在Tomc ...

  4. 浅谈OC内存管理

    一.基本原理 (一)为什么要进行内存管理. 由于移动设备的内存极其有限,所以每个APP所占的内存也是有限制的,当app所占用的内存较多时,系统就会发出内存警告,这时需要回收一些不需要再继续使用的内存空 ...

  5. 高德地图SDK使用经验

    下文说的是高德地图 Android SDK版本,详细版本如下: 2D地图:v2.3.1 定位:v1.3.0 导航:v1.1.1 发现的问题如下,其中一些疑是地图BUG,一些是需要你自己小心的地方: 1 ...

  6. Java四种引用类型

    纸上得来终觉浅,绝知此事要躬行  --陆游    问渠那得清如许,为有源头活水来  --朱熹 Java从1.2版本开始引入了4种引用,这四种引用的级别由高到低依次为:强引用>软引用>弱引用 ...

  7. 理解WebKit和Chromium:Chromium资源磁盘缓存

    转载请注明原文地址:http://blog.csdn.net/milado_nju ## 概述 想象一下,如果没有磁盘缓存的世界.当用户访问网页的时候,每次浏览器都需要从网站下载网页,图片,JS等资源 ...

  8. TrueType字体的后缀名解释

    OpenType标准定义了OpenType文件名称的后缀名.包含TureType字体的OpenType文件后缀名为.ttf,包含PostScript字体的文件后缀名为.OTF.如果是包含一系列True ...

  9. 基于Oracle ADF的应用程序开发

    ADF简介 ADF(Application Development Framework)是Oracle公司为简化J2EE程序开发的复杂性专门开发的一种解决方案,ADF通过减少实现设计模式和应用程序框架 ...

  10. ActiveMQ系列之三:理解和掌握JMS

    JMS是什么 JMS Java Message Service,Java消息服务,是Java EE中的一个技术. JMS规范 JMS定义了Java 中访问消息中间件的接口,并没有给予实现,实现JMS  ...