Java 无法在web应用程序目录中创建文件

Java 无法在web应用程序目录中创建文件,java,jsp,jakarta-ee,Java,Jsp,Jakarta Ee,我正在尝试在web应用程序目录中创建一个文件TestFile.db。但我一直都不成功。我不明白原因 尝试创建文件的JSP代码段: 名为app-1结构的web应用程序如下所示: 上面的代码没有创建任何异常并返回true,但我没有看到创建的任何文件。为什么呢?但如果我改变陈述,比如: File f = new File("/App-1/TestFile.db"); 我得到一个文件找不到异常。我不明白这是为什么。请解释这两种情况如何在目录App-1中创建文件?尝试调试并使用f.getAbsolut

我正在尝试在web应用程序目录中创建一个文件TestFile.db。但我一直都不成功。我不明白原因

尝试创建文件的JSP代码段:

名为
app-1
结构的web应用程序如下所示:

上面的代码没有创建任何异常并返回
true
,但我没有看到创建的任何文件。为什么呢?但如果我改变陈述,比如:

File f = new File("/App-1/TestFile.db");

我得到一个文件找不到异常。我不明白这是为什么。请解释这两种情况如何在目录
App-1
中创建文件?

尝试调试并使用f.getAbsolutePath()获取文件的路径,即创建文件的位置。因此,当您收到路径时,可以对其进行修改。请在收到更多信息时更新问题。 您收到的文件未找到,因为它看起来好像并没有实际创建。你真的调用了mkFile()命令吗?:)

如果exists()返回false,请执行以下操作:

file.createNewFile("fileName");
//write some data to file.

createFileName()创建完全空白的新文件。

您需要提供filemaker的正确路径。您可以通过从servlet上下文获取正确的路径来实现这一点

<%@page import="com.adtest.util.FileMaker"%>
<% if(new FileMaker().makeFile(this.getServletContext().getRealPath("/"))) {%>
    <h2>File Creation successful !</h2>
    <%} else {%>
        <h2>Unable to create a file !</h2>
        <%}%>

我想在应用程序上下文中创建文件。我的意思是
/App-1/FileCreated
当我调试时,我从
getAbsPath
中得到
C:\ProgramFiles\ApacheSoftwareFoundation\ApacheTomcat 7.0.22\bin\TestFile.db
。但是当我到达那里时,我没有看到任何文件使用.exists()方法检查文件-如果它返回false,那么您只有java对象,但没有实际的文件。好吧,这很奇怪。让我们试试Apache FileUtils只需向项目中添加一个jar并生成一个FileUtils.touch()命令。这是一种强制生成文件的方法。@saplingPro使用管理员权限打开您的IDE。我看到您在
C
驱动器中安装了apache。默认情况下,路径是项目的根目录。是的,默认情况下,根目录是进程开始的目录,但他正在查找web应用程序目录的路径。我个人认为,在web app dir路径中创建文件不是一个好主意。如果您要处理这些文件,为什么不为它们创建一个特殊的文件夹,而不花时间呢?:)@康斯坦丁:创建一个特殊文件夹吗?我想在运行时写入某些文件,只是为了存储一些数据。我选择在web应用程序中创建这些文件。它还确保我在另一台pc机上测试时不会更改路径。您可以生成一个常量路径,例如static final tempFolder=“C:\myprojectapp”,该路径可以在任何windows计算机上创建。嗯,你也可以为linux做一个变通方法。这是我们前段时间在项目中的做法。
file.createNewFile("fileName");
//write some data to file.
<%@page import="com.adtest.util.FileMaker"%>
<% if(new FileMaker().makeFile(this.getServletContext().getRealPath("/"))) {%>
    <h2>File Creation successful !</h2>
    <%} else {%>
        <h2>Unable to create a file !</h2>
        <%}%>
public boolean makeFile(String path) {
    try {
        File f = new File(path+"\\TestFile.db"); // CREATE A FILE
        if(!f.exists())
            f.createNewFile();
        PrintWriter writer = new PrintWriter(f);
        writer.println("This is a test statement on a test file");
        writer.close();
        success = true;
    }catch(Exception exc) {
        exc.printStackTrace();
        return success;
    }
    return success;
}