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. Cocos2D:塔防游戏制作之旅(六)

    现在,创建一个新的类用来表示炮塔.添加新的类文件,名称为Tower,继承于CCNode. 替换Tower.h文件为如下内容: #import "cocos2d.h" #import ...

  2. Leetcode_171_Excel Sheet Column Number

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42290079 Given a column title a ...

  3. LeetCode之“链表”:Linked List Cycle && Linked List Cycle II

    1.Linked List Cycle 题目链接 题目要求: Given a linked list, determine if it has a cycle in it. Follow up: Ca ...

  4. 《UNIX网络编程 卷1》之"学习环境搭建"(CentOS 7)

    <UNIX网络编程 卷1>的源码可以从www.unpbook.com下载得到.解压之后的目录为unpv13e. 详细步骤 编译 进入unpv13e目录,按如下步骤编译: ./configu ...

  5. 如何在Android上编写高效的Java代码

    转自:http://www.ituring.com.cn/article/177180 作者/ Erik Hellman Factor10咨询公司资深移动开发顾问,曾任索尼公司Android团队首席架 ...

  6. Android NDK开发三:java和C\C++交互

    转自:http://www.cnblogs.com/shangdahao/archive/2013/05/02/3053971.html 1.定义native方法并加载动态链接库: public cl ...

  7. 文件lseek操作产生空洞文件的方法

    在文件操作过程中,lseek操作可以偏移到文件的任意位置. 在UNIX文件操作中,文件位移量可以大于文件的当前长度,在这种情况下,对该文件的下一次写将延长该文件,并在文件中构成一个空洞,这一点是允许的 ...

  8. Linux文件内容查阅 - cat, tac, nl, more, less, head, tail, od

    cat 由第一行开始显示文件内容 tac 从最后一行开始显示,可以看出 tac 是 cat 的倒著写! nl 显示的时候,顺道输出行号! more 一页一页的显示文件内容 less 与 more 类似 ...

  9. 安卓笔记--intent传值不更新问题

    今天在学习安卓的过程中,遇到一个问题,就是用intent进行多次传值的话, 他永远是第一次的值 后来发现,intent接收数据被写到了onCreat();方法中,这时候finish();到上一个Act ...

  10. thrift实现HDFS文件操作

    thrift 文件如下 namespace java com.pera.file.transform struct  File{     1:string path ,     2:string co ...