JAVAEE Eclipse中的FilenotfoundExcption

时间:2017-10-01 07:30:16

标签: java eclipse java-ee

服务器:tomcat。

我创建了一个Servlet来调用JAVA程序来处理CSV文件。

代码新的ToJSON()。main(文件)将csv文件处理为json。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String [] files = request.getParameter("files").split(",");
    System.out.println(String.join(",", files));
    new ToJSON().main(files);
    ////call the java program to convert CSV files to json then sent the file name or the contain back.
    response.getWriter().append("data.json");
}

SEVERE: Servlet.service() for servlet [charting.servlet.ChartingServlet] in context with path [/Charting] threw exception
java.io.FileNotFoundException: BankFileLine.csv (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at java.io.FileReader.<init>(FileReader.java:58)
at format.LoadCSVFile.iterable(LoadCSVFile.java:60)
at format.LoadCSVFile.getMaxLength(LoadCSVFile.java:44)
at format.LoadCSVFile.<init>(LoadCSVFile.java:26)
at toJSON.ToJSON.main(ToJSON.java:26)

但我一直得到filenotfoundexception。我试图将文件放入WebContent和src。他们都没有工作。我试图添加路径:localhost:8080 / ChartingServlet / filename,仍然无法正常工作。

这是目录 Here is the directories of the project files

我的问题是我应该把文件放在哪里?

1 个答案:

答案 0 :(得分:-1)

在服务器上运行时的当前目录不是您应该依赖的任何内容,并且您所显示的内容都没有考虑到这一点。

1)如果不将csv文件提供给客户端,则实际上并不关心文件的位置,只关心读取正确的内容。对于这种情况,您可以将它们放在src文件夹下,然后使用servlet类中的#getResourceAsStream()获取其内容InputStream。这与普通Java应用程序的工作方式相同,如果要将Web应用程序打包为WAR文件,则不会中断。

2)如果客户端应该能够读取原始的.csv,那么您需要get the ServletContext from your request object,然后使用ServletContext#getRealPath()构建文件系统绝对路径,传入相对于{的路径{1}}文件夹,以便您知道文件的绝对位置,然后您可以正常阅读。此方法无法将您的应用程序打包为WebContent文件。你可以在那个场景中尝试ServletContext#getResourceAsStream(),但我没有第一手经验,所以我不确定它是否有效。