【问题标题】:Tomcat7 can't find my txt file [duplicate]Tomcat7找不到我的txt文件[重复]
【发布时间】:2017-05-31 14:22:46
【问题描述】:

我有一个 java web 应用程序项目,它由一个 java servlet 和一个经典的 java 文件组成。 servlet 调用在 java 文件中实现的方法。

其中一种方法涉及从文件中读取数据并将该文件的内容放入数组中。但是,在尝试了 BufferedReader、InputStream 和 classloader.getResource() 之后,我似乎仍然无法让它能够找到 txt 文件。

在Tomcat目录下,java文件加上txt文件位于/WEB-INF/classes。所以我不确定为什么它找不到文件..

谁能告诉我尝试从该文件中读取的最佳方法?

提前致谢。

编辑:这是我最近尝试读取它的尝试,导致 FileNotFound 异常。

ClassLoader cl = testClass.class.getClassLoader();
File file = new File(cl.getResource("text.txt").getFile());

Scanner sc = new Scanner(file); 

【问题讨论】:

标签: java file servlets tomcat7


【解决方案1】:

没有前导/

ClassLoader cl = testClass.class.getClassLoader(); File file = new File(cl.getResource("text.txt").getFile());

text.txt 应该在 WEB-INF/classes/ppp/text.txt 中,其中 ppp 是 testClass 的包路径。

带前导/

ClassLoader cl = testClass.class.getClassLoader(); File file = new File(cl.getResource("/text.txt").getFile());

在类路径(tomcat/lib、WEB-INF/lib、WEB-INF/classes 等)上搜索 text.txt。

【讨论】:

  • 哦,谢谢你,我实际上已经在正确的位置尝试了你的答案的第一部分 text,txt ,但它仍然无法找到文件。但我刚刚意识到我没有命名包,它只是(eclipse 中的默认包)。所以我想知道这会导致问题吗?我也会尝试使用前导 /。一个问题:当你说它是在类路径上搜索时。这是否意味着它没有特定的位置,它可能位于您列出的任一目录中(即 tomcat/lib、WEB-INF/lib、WEB-INF/classes 等)?
  • 我不确定tomcat类路径的所有目录,但我知道我列出的那些是。尝试创建日志记录 file.getCanonicalPath() 以查看使用的确切路径。
  • 我在 WEB-INF/classes 目录中使用我的文本文件尝试了您的领先 / 解决方案,它对我有用!非常感谢您的帮助!!!!
【解决方案2】:

你可以试试这个:

File file = new File(ClassLoader.getSystemResource("/path/to/file.txt").getFile());

【讨论】:

  • 谢谢!刚刚尝试过,现在没有 filenotfound 错误,而是出现 nullpointerexception 错误。你知道为什么吗?
猜你喜欢
  • 1970-01-01
  • 2015-06-08
  • 2016-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-01
  • 2020-01-21
相关资源
最近更新 更多