2017-05-31 87 views
2

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

其中一种方法涉及从文件读取并将该文件的内容放入数组中。然而,在尝试了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); 
+0

请将您的代码包含在您获取文件的位置。 – Alfabravo

+4

[Java资源作为文件]的可能重复(https://stackoverflow.com/questions/676097/java-resource-as-file)和https://stackoverflow.com/questions/4359876/how-to-load-参考文件作为一个文件实例从类路径 – Arpit

+0

@Arpit尝试了所有这些解决方案,他们没有帮助我。谢谢 –

回答

0

没有领先/

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

的text.txt应该是在WEB-INF /班/ PPP /的text.txt其中PPP是testClass的包路径。

凭借领先/

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

的text.txt中搜索关于类路径(Tomcat的/ lib下,WEB-INF/lib下,WEB-INF /类等)。

+0

哦,谢谢你,我实际上已经尝试了你的答案的第一部分与文本,TXT在正确的位置,它仍然无法找到该文件。但我只是意识到我没有一个命名包,它只是(在Eclipse中的默认包)。所以我想知道是否会造成问题? 我会尝试它与领先/。一个问题:当你说它在类路径上被搜索时。这是否意味着它没有特定的位置,它可能位于您列出的任一目录中(即tomcat/lib,WEB-INF/lib,WEB-INF/classes等)? –

+0

我不确定tomcat的classpath的所有目录,但我知道我列出的是。尝试创建日志文件file.getCanonicalPath()以查看使用的确切路径。 –

+0

我在WEB-INF/classes目录中用我的文本文件试过了你的领导/解决方案,它对我很有帮助!非常感谢您的帮助!!!! –

0

你可以试试这个:

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

谢谢!只是试过,现在theres没有filenotfound错误,而是一个nullpointerexception错误。你偶然有什么想法? –