gpt4 book ai didi

java - 如何通过 Servlet 的 doPost() 方法在 Tomcat 服务器上创建文件?

转载 作者:行者123 更新时间:2023-12-02 05:49:16 25 4
gpt4 key购买 nike

我正在尝试将包含来自 http post 请求的数据的字符串保存到服务器上/database 目录中的新文件中。

public class TestIO {

public static void main(String[] args) {
try {
File newFile = new File("database.txt");
FileWriter fileWriter = new FileWriter(newFile);
PrintWriter printWriter = new PrintWriter(fileWriter);
printWriter.println("test");

fileWriter.close();
printWriter.close();
} catch (Exception e) {
e.printStackTrace();
}
}

}

在项目根目录下创建一个文件database.txt,其中包含文本“test”就可以了。但是,

@WebServlet("/TestIO")
public class TestIO extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//doGet
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
File newFile = new File("database.txt");
FileWriter fileWriter = new FileWriter(newFile);
PrintWriter printWriter = new PrintWriter(fileWriter);
printWriter.println("test");

fileWriter.close();
printWriter.close();
} catch (Exception e) {
e.printStackTrace();
}
}

}

什么也不做。没有创建文件,没有抛出错误。

最佳答案

PrintWriter 会吞下异常,因此您可能因不调用 checkError() 而错过了这些异常。

但是,如果您也尝试了 FileWriter 并且没有出现异常,那么答案是该文件确实已创建 - 只是不在您期望的位置。例如,查看 Tomcat bin 目录。如果您希望在网络应用程序内的路径中创建它,则必须使用 ServletContext.getRealPath() 等。

另一方面,如果您得到的是一个文件,原因如下:

fileWriter.close();
printWriter.close();

这是不正确的。您关闭了 FileWriter 而不给 PrintWriter 刷新的机会,当您关闭 PrintWriter 时,它会尝试刷新并吞掉异常。完全删除这两个关闭中的第一个。

关于java - 如何通过 Servlet 的 doPost() 方法在 Tomcat 服务器上创建文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23718034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com