如何在servlet中获取本地文件

2023-12-02

我在本地设置 Tomcat 服务器,并将文本文件放置在 C 盘 (c:\test\myfile.txt) 中。

在我的 servlet 中,我指定了文件的确切路径来读取它。我成功地做到了这一点。

我的问题是,在部署之前我应该​​将 txt 文件放在哪里以及如何导航到它来读取它? 我做了测试并在本地Tomcat上运行

System.out.println("Working Directory = " +
              System.getProperty("user.dir"));

它向我显示了 Eclipse 文件夹!可能是因为我通过eclipse运行tomcat。所以我确信要么有一个特定的数据文件夹,要么我应该在文件系统中的某个位置创建一个文件夹,但我需要相对路径。

任何建议表示赞赏


这是你的选择。基本上有以下三种方式:

将其放入类路径中,以便您可以通过以下方式加载它ClassLoader#getResourceAsStream()使用类路径相对路径:

Properties properties = new Properties();
properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("filename.properties"));

Here filename.properties应该放置在 web 应用程序的默认类路径覆盖的根目录之一中,例如Webapp/WEB-INF/lib, Webapp/WEB-INF/classes, Appserver/lib or JRE/lib。如果属性文件是特定于 Web 应用程序的,最好将其放在WEB-INF/classes。如果您在 IDE 中开发项目,也可以将其放入 src 文件夹(项目的源文件夹)中。

您也可以将其放在默认类路径之外的某个位置,并将其路径添加到应用程序服务器的类路径中。例如,在 Tomcat 中,您可以将其配置为 Shared.loader 属性Tomcat/conf/catalina.properties.

2.) 将其放在 web 文件夹(项目的 web 内容文件夹)中的某个位置,以便您可以通过以下方式加载它ServletContext#getResourceAsStream()具有网络内容相对路径:

Properties properties = new Properties();
properties.load(getServletContext().getResourceAsStream("/WEB-INF/filename.properties"));

请注意,我已经演示了将文件放入/WEB-INF文件夹,否则任何网络浏览器都可以公开访问它。另请注意,ServletContext是在任何HttpServlet类只能由继承访问GenericServlet#getServletContext().

3.) 将其放在本地磁盘文件系统中的某个位置,以便您可以正常加载它java.io使用绝对本地磁盘文件系统路径的方式:

Properties properties = new Properties();
properties.load(new FileInputStream("/absolute/path/to/filename.properties");

这里有很多不同的方法,但这取决于您的需求:

从以下位置加载属性文件$TOMCAT_HOME/conf directory你需要使用访问它java.io.File自类加载器以来的对象(如this.getClass().getClassLoader().getResourceAsStream(...)只能从类路径(在WEB-INF/classes, WEB-INF/lib or $TOMCAT_HOME/lib).

从以下位置加载文件的最简单示例Tomcat's config directory将会:

File configDir = new File(System.getProperty("catalina.base"), "conf");
File configFile = new File(configDir, "myconfig.properties");
InputStream stream = new FileInputStream(configFile);
Properties props = new Properties();
props.load(stream);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在servlet中获取本地文件 的相关文章

随机推荐

  • 根据rtl或ltr语言自动设置方向和文本对齐

    我们可以设置direction财产为body指示方向的标签rtl to ltr 同样我们可以设置text align各个元素的属性 有没有什么方法可以最小化或集中编码工作来设计一个可以同时支持这两种功能的应用程序LTR 英语 和RTL 阿拉
  • Drive API - 下载/上传 sql 数据库

    我目前正在下载我使用驱动 API 上传的 SQL 数据库 肯定有一个备份 但是当我尝试打开该文件时 我收到一条错误消息 指出该文件无法打开 EDIT 我解决了上面的问题 现在我想最终上传和下载sql数据库 我在互联网上找到了可以下载和上传的
  • 一种在Python中从数据对创建簇的算法

    我正在寻找一种智能算法或Pythonic 方法来从数据对创建集群 输入数据的结构如下 productA ProductB productB ProductC productC ProductD productA ProductD produ
  • Bokeh DataTable 在触发(“更改”)后不会更新,无需单击标题

    散景版本 0 10 蟒蛇 3 4 木星 4 x 目标 创建一个仅显示从散点图中选择的数据的表 问题 DataTable 仅在单击后才刷新 尽管 s2 trigger change 在 Bokeh 网站的其他示例中 一 绘图将使用此技术更新另
  • justify-content:第一个和最后一个项目之间的间距也相同[重复]

    这个问题在这里已经有答案了 我想使用 flexbox 来设置一个简单的弹性 网格 container display flex flex wrap wrap justify content space between but 我希望外边距等
  • .xcconfig?如何设置环境变量

    我是 Xcode 新手 在过去的两天里 我试图弄清楚如何在访问网络服务的 iPhone 上测试我的应用程序 在模拟器上 我可以使用硬编码的 localhost 变量 但我不想硬编码所有配置设置 我正在使用 Swift Xcode 6 但我认
  • 数组初始化之间的差异

    请参阅以下声明 char a 5 jgkl let s call this Statement A char b jhdfjnfnsfnnkjdf let s call this Statement B and yes i know thi
  • 基于相似单词序列的字符串聚类

    我正在寻找一种有效的方法 根据相似单词序列的出现将大约 1000 万个字符串聚类成簇 考虑一个字符串列表 例如 the fruit hut number one the ice cre am shop number one jim s ta
  • JPEG: YCrCb <-> RGB 转换精度

    我已经使用 JPEG 转换公式实现了 rgb gt ycrcb 和 ycrcb gt rgb 转换 http www w3 org Graphics JPEG jfif3 pdf 同样在 http en wikipedia org wiki
  • webview 未在 javafx 中打开弹出窗口

    我正在尝试使用 javafx 在 webview 中打开网页 单击超链接时 此网页将打开一个新的弹出窗口 我如何打开新的弹出窗口 当尝试在默认网络浏览器 如 chrome IE 中打开相同的网页时 它们会打开弹出窗口 为了创建弹出窗口 我使
  • PHP:将接口作为参数传递

    在 NET 中 我将接口作为类方法中的参数传递 我想知道PHP可以实现吗 我的场景是我有一个处理 mqin 系统功能的类 现在我想将通知系统与其集成 我想将通知系统分开 因为它不是系统的主要部分 而且我可以在其他地方使用它 如果我有以下结构
  • ORA-00913 值太多

    我有这个查询 INSERT INTO hist museum SELECT from of owner museum al JOIN SELECT vd city data id FROM of owner city data vd WHE
  • 如何在鼠标移动窗口时接收通知?

    I tried setFrame display and windowDidMove 但移动窗口时不会发送它们 如果你想追踪NSWindow现场搬家 默认情况下是不可能的 您必须自己完成 可以在以下情况下收到通知NSWindow开始拖动 移
  • 全屏显示图像

    我正在研究Windows Phone 8 app并在 XAML 中有一个像这样的图像视图
  • Redis 缓存与直接使用内存

    我还没有使用过Redis 但我听说过它并计划尝试使用它来缓存数据 我听说Redis使用内存作为缓存存储数据库 既然我可以使用对象或字典来存储数据 那么 Redis 的意义何在 像这样 var cache key key 使用Redis有什么
  • IE8 和 jQuery 空指针

    我正在构建一个带有一些动画翻转的网站 我在其中对背景图像进行动画处理以提供颜色淡入淡出效果 它在 FF3 Safari chrome 中工作正常 但 IE8 会抛出 未定义为 null 或不是对象 错误 全文 Message undefin
  • CListCtrl 中的垂直滚动条

    我在图标视图中使用 CListCtrl 但它水平滚动 1 3 5 7 gt 2 4 6 8 gt 我宁愿它水平滚动 1 2 3 4 5 6 V V 有没有办法做到这一点 将设计器中的对齐方式从左更改为上
  • Drupal 到 Drupal 迁移

    我正在尝试迁移主机 但在从一个 Drupal 实例迁移到另一个实例时遇到问题 我有一个多站点安装 我正在尝试维护文件 代码以及数据库 我已将 Drupal 实例中的文件从旧服务器传输到新服务器 我已经通过 phpmyadmin 导出了数据库
  • 如何在没有 root 权限的情况下以编程方式截取其他应用程序的屏幕截图,例如 Screenshot UX Trial?

    如何在没有 root 权限的情况下以编程方式截取其他应用程序的屏幕截图 例如 Screenshot UX Trial 我知道我可以在我的应用程序中捕获根视图的位图 但是当我的应用程序在后台运行时 我无法获取其他应用程序的根视图 bitmap
  • 如何在servlet中获取本地文件

    我在本地设置 Tomcat 服务器 并将文本文件放置在 C 盘 c test myfile txt 中 在我的 servlet 中 我指定了文件的确切路径来读取它 我成功地做到了这一点 我的问题是 在部署之前我应该 将 txt 文件放在哪里