我需要創建目錄並在servlet中讀取目錄。在tomcat中創建和讀取目錄
如果我想在我的webapps/appName
目錄中創建一個文件夾,我該如何做到這一點?
目前,如果我做的:
File file = new File("conf\Conf.xml");
這將調查目錄 「{TOMCAT_HOME} \ BIN \」
如何指向我的默認目錄爲「{TOMCAT_HOME} \的webapps \ APPNAME 「
我需要創建目錄並在servlet中讀取目錄。在tomcat中創建和讀取目錄
如果我想在我的webapps/appName
目錄中創建一個文件夾,我該如何做到這一點?
目前,如果我做的:
File file = new File("conf\Conf.xml");
這將調查目錄 「{TOMCAT_HOME} \ BIN \」
如何指向我的默認目錄爲「{TOMCAT_HOME} \的webapps \ APPNAME 「
爲什麼你會這樣做的問題....最便攜的方法是將<init-param>
添加到您的servlet並以這種方式傳遞路徑。
也可以使用System.getenv()
獲取TOMCAT_HOME
環境變量,假設它已被設置。
你只需要從servlet上下文獲得真正的路徑,它會給你正在尋找的路徑,做一些這樣的事情,這段代碼將創建以當前日期爲名稱的目錄。如果您希望避免servlet啓動延遲,請創建一個線程並將目錄創建委託給該線程。您可以像這樣將目錄路徑保存到servlet上下文。
private static final String DIR_SERVLET_CTX_ATTRIB = "directoryPathAttrib";
public void init() throws ServletException {
StringBuilder filePathBuilder = new StringBuilder(getServletContext().getRealPath("/").toString());
filePathBuilder.append(File.separator);
filePathBuilder.append(new SimpleDateFormat("MM-dd-yyyy").format(new Date()));
System.out.println("Directory path: "+ filePathBuilder.toString());
File file = new File(filePathBuilder.toString());
if(!file.exists())
{
file.mkdir();
System.out.println("finished creating direcotry");
}
getServletContext().setAttribute(DIR_SERVLET_CTX_ATTRIB, filePathBuilder.toString());
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, java.io.IOException
{
String dirPath = (String)getServletContext().getAttribute(DIR_SERVLET_CTX_ATTRIB);
File file = new File(dirPath + File.separator + "test.txt");
FileOutputStream fis = new FileOutputStream(file);
fis.write("Hello".getBytes());
fis.flush();
}
如果我想在我的webapps/APPNAME目錄下創建一個文件夾,我應該做些什麼來實現這一目標?
沒有。你應該忘記這種方法,並尋找替代方法。無論何時重新部署WAR,甚至無論何時重新啓動服務器,在webapp文件夾結構中進行的所有更改都將不可逆轉地丟失。
您需要準備一個具有讀/寫權限的固定文件夾,並將其絕對磁盤文件系統路徑設置爲配置設置(properties/xml文件)或VM參數。例如,/var/webapp/uploads
。這樣你就可以用通常的方式使用File
。
String root = getRootSomehow(); // Must return "/var/webapp/uploads".
File file = new File(root, "somefile.txt");
// ...
一個完全不同的選擇是使用數據庫。如果您將Web應用程序部署到不允許您在Web應用程序上下文之外創建文件夾的主機,這將是唯一的選擇。
我已經做了這樣的事情,因爲這些文件的使用與該部署有關,如果文件的使用與綁定沒有關係,那麼我會建議不要這樣做。 –