繁体   English   中英

如何在服务器(Tomcat 7)中创建文件夹?

[英]How can I create a folder inside a server (Tomcat 7)?

我正在使用java和jsf,我想在服务器内创建一个文件夹,然后临时保存文件并随后将其删除(而不是文件夹本身)。 我试过这段代码:

boolean folderPath;
folderPath = new File ("/Images").mkdir();

但是上面的代码在我的本地磁盘中创建了该文件夹。

不要那样做。 您永远不能保证WAR文件夹是可写的,甚至不能在物理磁盘上。 例如,当servlet容器配置为将WAR扩展到内存而不是磁盘中时。

因为它显然是一个临时文件,所以只需使用File#createTempFile()

File tempFile = File.createTempFile("filename", ".png");
// ...

或者使用固定磁盘文件系统上的外部文件夹,其绝对路径将设置为VM参数或某些配置设置。


更新 :您可以使用servlet来显示该文件。 我收集到它是一个图像文件。 您可以使用<h:graphicImage>其中在路径中设置临时文件的文件名。

例如,在bean中:

this.filename = tempFile.getName();

然后在视图中:

<h:graphicImage value="images/#{bean.filename}" />

然后应该在/images/*上侦听的servlet如下所示(在练习中省略了例外检查):

@WebServlet("/images/*")
public class ImageServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        File file = new File(System.getProperty("java.io.tmpdir"), request.getPathInfo());

        response.setHeader("Content-Type", getServletContext().getMimeType(file.getName()));
        response.setHeader("Content-Length", String.valueOf(file.length()));

        InputStream input = new FileInputStream(file);
        OutputStream output = response.getOutputStream();

        // Now write input to output the usual way.
    }

}

对于Primefaces,我使用以下命令:

导入此:

导入javax.faces.context.ExternalContext;

然后是主类:

字符串resultFolder =“ newFolder”;

ExternalContext extContext = FacesContext.getCurrentInstance()。getExternalContext();

文件结果=新文件(extContext.getRealPath(“ // WEB-INF //” + resultFolder).mkdir();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM