服务器: 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)但我一直在弄文件库。我试图将这些文件放入WebContent和src中。他们都不起作用。我尝试添加路径:localhost:8080/ChartingServlet/filename,但仍然没有工作。
下面是目录以下是项目文件的目录
我的问题是我应该把文件放在哪里?
发布于 2017-10-01 07:57:50
在服务器上运行时的当前目录不是您应该依赖的任何内容,您所展示的任何内容都没有考虑到这一点。
1)如果不向客户端提供csv文件,您实际上并不关心该文件在哪里,您只关心读取正确的内容。在这种情况下,您可以将它们放在src文件夹下,然后使用servlet类中的#getResourceAsStream()获取内容的InputStream。这与在普通Java应用程序中的工作方式相同,如果您想将web应用程序打包为WAR文件,则不会中断。
2)如果客户端应该能够读取原始的.csv,则需要从请求对象,然后使用ServletContext#getRealPath()构建文件系统绝对路径,传递相对于WebContent文件夹的路径,从而知道文件的绝对位置,然后可以正常读取文件。这种方法不适合将应用程序打包为WAR文件。您可以在这个场景中尝试ServletContext#getResourceAsStream(),但是我没有第一手的经验,所以我不确定它是否有效。
https://stackoverflow.com/questions/46510198
复制相似问题