簡體   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