可以使用Java类附加到文件,但不使用Javaservlet

可以使用Java类附加到文件,但不使用Javaservlet,java,csv,servlets,Java,Csv,Servlets,我有一个客户机-服务器模型,其中客户机填写表单,服务器将表单数据保存到.csv文件中。以下是我用来写入csv的代码: String fileName="responses.csv"; File f = new File(fileName); PrintWriter toFile = new PrintWriter(new BufferedWriter(new FileWriter(f, true))); toFile.prin

我有一个客户机-服务器模型,其中客户机填写表单,服务器将表单数据保存到.csv文件中。以下是我用来写入csv的代码:

        String fileName="responses.csv";

        File f = new File(fileName);

        PrintWriter toFile = new PrintWriter(new BufferedWriter(new FileWriter(f, true)));

        toFile.println("test1,test2,\"test3,test4\"");//test code
        toFile.close();
我在一个包中有一个Javaservlet(javax.Servlet-API3.1.0)和一个Tester.Java类。java中有一个
main()
方法,该方法执行上述代码,然后终止

当我在测试仪中运行这段代码时,它工作正常,csv按预期编写

但是,在我的Servlet中,文件没有写入。我没有看到任何异常表明我有访问问题。因为两个.java文件都在同一个包中,所以它们都可以访问我的csv文件

请注意,我的main()方法在文件写入后终止,而Servlet则不会


为什么我的servlet不能写入文件?我们衷心感谢您的指导。谢谢

请检查创建的文件是否确实存在以及您看到的权限。尝试将csv文件保存在用户具有写入权限的路径上


此外,如果没有错误,请打印文件的绝对路径以查看文件写入的位置。

文件系统权限与Java访问控制无关——同一个包中的两个类与它们是否可以访问相同的文件无关。但是,如果没有异常,那么最有可能的解释是servlet确实写入了文件,但文件并不是您期望的位置。您使用的是相对文件名,该文件名将根据VM的当前工作目录进行解析。当您在VM中运行servlet引擎时,这可能与您运行自己的测试应用程序时大不相同。另一种可能是您提供的代码在servlet中无法访问。您没有为我们提供足够的示例来评估这一点。当我的Tester类写入项目目录中的csv时,我的servlet正在写入eclipse安装位置中的csv。打印绝对路径有帮助。谢谢你的帮助!