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. iOS中 UITabBarController中自定义UITabBar

    1.创建多个视图控制器,放如UITabBarController中 AViewController *aa = [[AViewController alloc] init]; UINavigation ...

  2. android studio编译慢的问题

    1.修改android studio的使用堆内存,根据自己电脑的内存,尽量设置的大一点,点击help->如下图: 2.接下来设置使用离线gradle构建,一开始就是使用了内置的默认路径gradl ...

  3. 一键安装LAMP

    一键安装LAMP LAMP是Linux,Apache,MySQL和PHP合起来的简称,用于开发网站.对于初学者而言,没有什么比一键部署一个LAMP开发环境更省心的了,到下面的网址下载BitNami: ...

  4. 【Android】自定义ListView的Adapter报空指针异常解决方法

    刚刚使用ViewHolder的方法拉取ListView的数据,但是总会报异常.仔细查看代码,都正确. 后来打开adapter类,发现getView的返回值为null. 即return null. 将n ...

  5. centos6.5 rsync+inotify实现服务器之间文件实时同步

    1. rsync的优点与不足 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据 ...

  6. linux 网络不通问题排查

    基本的排错步骤(从上往下)ping 127.0.0.1ping的通说明tcp协议栈没有问题ping 主机地址 ping的通说明网卡没有问题ping 路由器默认网关 ping的通说明包可以到达路由器最后 ...

  7. Spring--ClassPathXmlApplicationContext

    public class ClassPathXmlApplicationContext extends AbstractXmlApplicationContext { private Resource ...

  8. 带三方登录(qq,微信,微博)

    实现QQ.微信.新浪微博和百度第三方登录(Android Studio) 前言:  对于大多数的APP都有第三方登录这个功能,自己也做过几次,最近又有一个新项目用到了第三方登录,所以特意总结了一下关于 ...

  9. Linux - 动态(Dynamic)与静态(Static)函数库

    首先我们要知道的是,函式库的类型有哪些?依据函式库被使用的类型而分为两大类,分别是静态 (Static) 与动态 (Dynamic) 函式库两类. 静态函式库的特色: 扩展名:(扩展名为 .a)   ...

  10. 使用钩子参与到TCP拥塞事件的处理中

    TCP定义了几个拥塞事件,当这些事件发生时,我们可以通过TCP的拥塞控制算法,调用自定义的处理函数, 来做一些额外的事情的.也就是说,我们可以很简便的参与到TCP对拥塞事件的处理过程中. Author ...