동적 인 웹 애플리케이션의 WEB-INF/Classes 디렉토리에 Java 클래스 UpdateStats가 있습니다.이 클래스에는 writeLog() 함수가 있습니다. 몇 가지 로그를 텍스트 파일에 씁니다.이 텍스트 파일을 웹 콘텐츠 디렉토리에 저장하고 싶습니다. 따라서 함수가 업데이트 될 때마다 통계는 해당 텍스트 파일에 기록됩니다. 문제는 WEB-INF/Classes 디렉토리에있는 해당 기능 내에서 웹 콘텐트 디렉토리에있는 텍스트 파일의 경로를 제공하는 방법입니다.WEB-INF/classes 디렉토리의 클래스에서 WebContent 디렉토리의 파일에 쓰는 방법
1
A
답변
-1
파일을 작성하려면 파일 클래스로서 절대 경로가 필요한 서버의 웹 콘텐츠 디렉토리 절대 경로를 알아야합니다.
File f = new File("/usr/local/tomcat/webapps/abc/yourlogfile.txt");
FileOutputStream out = new FileOutputStream(f);
out.writeLog("Data");
가정 : ABC는
의 WebContent 당신이 응용 프로그램을 배포하는 디렉토리없는 프로젝트 이름입니다. 웹 컨텐츠의 모든 파일은 프로젝트 이름 바로 아래에 표시됩니다.
+0
Windows 또는 Mac 또는 다른 서버에서 작업하는 경우 어떻게됩니까? – HCarrasko
3
당신의 ServletContext에서 웹 애플리케이션 루트 디렉토리를 얻을 수 있습니다 :이 도움이
String path = getServletContext().getRealPath("WEB-INF/../");
File file = new File(path);
String fullPathToYourWebappRoot = file.getCanonicalPath();
희망을.
0
당신은 당신이 getServletContext().getRealPath()
을 수행 할 때, 서블릿에
을 다음과 같은 일을하고, 파일이 웹 콘텐츠의 위치에서 볼 수 있습니다 약간의 문자열 인수를 넣을 수 있습니다. WEB-INF에 무언가를 원하면 fileName에 "WEB-INF/my_updates.txt"를 부여 할 수 있습니다.
File update_log = null;
final String fileName = "my_updates.txt";
@Override
public void init() throws ServletException {
super.init();
String file_path = getServletContext().getRealPath(fileName);
update_log = new File(file_path);
if (!update_log.exists()) {
try {
update_log.createNewFile();
} catch (IOException e) {
e.printStackTrace();
System.out.println("Error while creating file : " + fileName);
}
}
}
public synchronized void update_to_file(String userName,String query) {
if (update_log != null && update_log.exists()) {
FileOutputStream fos = null;
try {
fos = new FileOutputStream(update_log, true);
fos.write((getCurrentFormattedTime()+" "+userName+" "+query+"\n").getBytes());
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fos != null) {
try {
fos.flush();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
WAR보다 수명이 긴 데이터를 저장하려는 경우이 저장 공간이 좋지 않다는 것을 잘 알고 있기를 바랍니다. deploy 폴더의 변경 사항은 WAR 파일 자체에 포함되지 않은 간단한 이유 때문에 WAR를 재배포 할 때마다 없어집니다. 지금까지 답변을 한 사람 중 아무도 이것을 고려하지 않은 것은 실망 스럽습니다. – BalusC