Java 如何在服务器(Tomcat 7)中创建文件夹?
我使用java和jsf,我想在服务器中创建一个文件夹,然后临时保存文件,然后删除它(而不是文件夹本身)。 我尝试过以下代码:Java 如何在服务器(Tomcat 7)中创建文件夹?,java,jsf-2,Java,Jsf 2,我使用java和jsf,我想在服务器中创建一个文件夹,然后临时保存文件,然后删除它(而不是文件夹本身)。 我尝试过以下代码: boolean folderPath; folderPath = new File ("/Images").mkdir(); 但是上面的代码在我的本地磁盘中创建了文件夹。不要这样做。您永远不能保证WAR文件夹是可写的,甚至不能保证它在物理磁盘上。例如,当servletcontainer配置为将WAR扩展到内存而不是磁盘中时 因为它显然是一个临时文件,所以只需使用: 或者
boolean folderPath;
folderPath = new File ("/Images").mkdir();
但是上面的代码在我的本地磁盘中创建了文件夹。不要这样做。您永远不能保证WAR文件夹是可写的,甚至不能保证它在物理磁盘上。例如,当servletcontainer配置为将WAR扩展到内存而不是磁盘中时 因为它显然是一个临时文件,所以只需使用: 或者使用固定磁盘文件系统上的外部文件夹,其绝对路径将设置为VM参数或某些配置设置
更新:可以使用servlet显示该文件。我推测这是一个图像文件。您可以使用
在路径中设置临时文件的文件名
例如,在豆子内部:
this.filename = tempFile.getName();
然后在视图中:
应该在/images/*
上侦听的servlet可以如下所示(在练习中省略异常检查):
对于Primefaces,我使用以下方法: 导入此文件: 导入javax.faces.context.ExternalContext 然后是主要班级: 字符串resultFolder=“newFolder” ExternalContext extContext=FacesContext.getCurrentInstance().getExternalContext() 文件结果=新建 文件(extContext.getRealPath(“//WEB-INF//”+resultFolder.mkdir()
我可以在浏览器中输出该文件吗?当然可以。只需使用servlet并将文件名作为请求参数或pathinfo传递,或者可能将整个
文件
作为会话属性传递。servlet可以依次从中获取文件输入流
,并将其写入响应的输出流
,以及usu的一些头顺便问一下,你能给我一个例子吗?因为我刚刚接触Servlet,谢谢。
this.filename = tempFile.getName();
@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.
}
}