Web项目中读取web目录下的readme.txt文本文档

2023-10-28

在Web项目中,读取web目录下upload文件夹里的readme.txt文本文档,其中保存了字符“Hello World!”,具体的情况如下图所示:

实现代码如下:

package servlet;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

@WebServlet(name = "readme", urlPatterns = "/readme")
public class ReadmeServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("readme service ......");

        // 1. 获取ServletContext对象
        ServletContext context = req.getServletContext();
        // 2. 使用输入流读取upload目录下的readme.txt文件
        // 在Web项目中,读写文件的路径不能写为URL路径
        // 需要将URL路径转换为真实路径
        String realPath = context.getRealPath("/upload/readme.txt");
        // E:\\IdeaProjects\\myWeb\\out\\artifacts\\myWeb_war_exploded\\upload\\readme.txt
        System.out.println(realPath);
        // 3. 将真实路径包装成FileReader对象
        // 注意,FilerReader类有3个构造器:
        //      3.1 FileReader(String fileName)
        //      3.2 FileReader(File file)
        //      3.3 FileReader(FileDescriptor fd) 这个构造器不常用!
        FileReader fr = new FileReader(realPath);
        // 因为FileReader对象一次仅能读取一个字符
        // 所以将FileReader对象包装成BufferedReader对象
        // 该对象可以实现一次读一行字符,提高了读取效率
        BufferedReader br = new BufferedReader(fr);
        // 使用BufferedReader对象读取真实路径中readme.txt里的字符
        // 一次读一行
        // null if the end of the stream has been reached
        // 虽然readme.txt文件里仅有一行字符
        // 但readLine方法一共需要读两次
        // 第一次读完,line不为null,打印line
        // 第二次再去读,line为null,不进入循环体,不打印line
        String line = null;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
        // 关闭输入流
        br.close();
    }
}

点击运行,并通过浏览器访问http://localhost:8080/myWeb/readme后,控制台输出如下图所示:

从运行结果中可以观察到,已打印输出readme.text文本文档中保存的字符“Hello World!”,说明读取已经成功! 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Web项目中读取web目录下的readme.txt文本文档 的相关文章

随机推荐

  • office全家桶_大学新生必备!Adobe+Office全家桶免费拿。

    做最有趣有料的科技自媒体 数一数手指 还有几天就要开学了 各 位准大学生们听我 说 作为曾经的 学长 我很有必要告诉你们一些来自大学的 潜规则 你迟早有一天会用到电脑里装的Adode和offic的软件 Adobe和 office 的软件可以
  • Android 自定义属性,自定义控件、自定义View以及View的常见Error

    Android 自定义属性 自定义控件 自定义View以及View的常见Error View GONE 不占据layout 但是对象还是存在 资源还是占用的 View INVISIBLE 占据layout 对象还是存在 资源还是占用的 只是
  • Java开发代码规范之异常日志(二)——日志规约

    文章通过学习 阿里巴巴Java开发手册 整理 1 应用中不可直接使用日志系统 Log4j Logback 中的API 而应依赖使用日志框架SLF4J中的API 使用门面模式的日志框架 有利于维护和各个类的日志处理方式统一 import or
  • 【华为OD机试】不开心的小朋友(C++ Python Java)2023 B卷

    时间限制 C C 1秒 其他语言 2秒 空间限制 C C 262144K 其他语言524288K 64bit IO Format lld 题目描述 游乐场里增加了一批摇摇车 非常受小朋友欢迎 但是每辆摇摇车同时只能有一个小朋友使用 如果没有
  • 信号与系统——初识到理解(第五章——傅立叶变换的应用)

    目录 第五章 傅立叶变换的应用 信号与系统的时频域特性 5 1 傅立叶变换的模和相位表示 5 2 无失真传输系统 讨论连续情况 离散时足以整数约束即可 5 3 系统相位 5 4 群时延 采样 5 5 通信中对信号的加工 5 6 冲击串采样
  • SM2可以使用私钥加密吗

    是的 SM2可以使用私钥加密 SM2是一种非对称加密算法 它使用公钥和私钥对数据进行加密和解密 私钥是保存在本地的密钥 只有拥有私钥的人才能使用它来加密数据或对已加密的数据进行解密 SM2的私钥加密功能可以用来保护数据的安全性 防止数据在传
  • 文件上传漏洞

    文件上传 文件上传是现代互联网常见的功能 允许用户上传图片 视频 及其他类型文件 向用户提供的功能越多 Web受攻击的风险就越大 文件上传漏洞 上传文件时 如果未对上传的文件进行严格的验证和过滤 就容易造成文件上传漏洞 上传脚本文件 包括a
  • 大数据学习01 -Linux 的简单使用

    1 NAT 网络地址转换 默认使用VMnet8 1 原理 子网掩码 和IP进行与操作 可以得到对应的子网IP 在那个网段上 IP 哪台机制 网关 路由器的IP dns 去dbs服务器查找域名对应的IP 常用命令 修改主机名 vi etc s
  • 13.罗马数字转整数

    这题转成字符数组后遍历就是了 罗马数字包含以下七种字符 I V X L C D 和 M 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如 罗马数字 2 写做 II 即为两个并列的 1 12 写做 X
  • 2023华为OD机试 报数游戏(Python)

    题目 输入 输入一个整数 n 代表有多少人 n 小于 1000 输出 告诉我最后剩下的那个人原来是第几个 示例 输入 2 输出 2 解释 两人围成一圈 第一个人数到3就走了 所以最后剩的是第二个人 理解 想象这样一个游戏 大家围成一圈 从第
  • C++:sort函数

    sort函数用于C 中 对给定区间所有元素进行排序 默认为升序 也可进行降序排序 sort函数进行排序的时间复杂度为n log2n 比冒泡之类的排序算法效率要高 使用sort函数要包含头文件为 include
  • Nginx实现四层代理与七层代理

    目录 一 实验环境准备 1 准备三台服务器 2 安装nginx环境 3 启动nginx环境 二 设置Nginx七层代理 1 proxy代理服务器配置 轮询 2 设置加权轮询 3 健康检测功能 4 解决重复登录问题 源地址哈希ip hash
  • 透视投影

    11
  • Idea使用Maven编译scala和打包jar

    下面Maven的pom文件
  • DBhelper的使用

    建立一个DbHelper cs类文件 复制内容 using System using System Data using System Data SqlClient using System Configuration using Syst
  • FreeImage例子

    http www pudn com downloads525 sourcecode windows detail2176862 html include OpenJPEG h include unistd h OpenJPEG OpenJP
  • fabric链码的编写-入门

    链码的编写 前言 fabric链码的编写较简单 在熟悉了基本结构和相关API之后就可上手编写 但是要多多练习 提高编写链码的速度和正确度 学习步骤 1 熟悉链码的基本结构 2 熟练链码相关API 3 练习 练习 练习 参考链接 https
  • day16 二叉树

    LeetCode110 平衡二叉树 二叉树的左右高度相差不超过1即可 package algor trainingcamp import algor junior algor tree TreeNode author lizhe versi
  • 循环的嵌套之求素数

    循环嵌套 前 学习了三种循环 while do while for 这三种循环往往会嵌套在 起才能更好的解决问题 就是我们所说的 循环嵌套 下面我们有一个经典的列题来将嵌套引用 找出100 200之间的素数 并打印在屏幕上 注 素数 称质数
  • Web项目中读取web目录下的readme.txt文本文档

    在Web项目中 读取web目录下upload文件夹里的readme txt文本文档 其中保存了字符 Hello World 具体的情况如下图所示 实现代码如下 package servlet import javax servlet Ser