Obtendo um caminho relativo
Nota: Caminhos relativos (ou seja, sem especificar a quem são relativos no momento) podem ser obtidos das seguintes maneiras (seja um projeto java geral ou um projeto web)
String relativamentePath=System.getProperty("user.dir");
No caminho relativo acima, os arquivos do projeto java são relativos ao diretório raiz do projeto
O caminho do arquivo no projeto web varia dependendo dos diferentes servidores web (o tomcat é relativo ao diretório de instalação do tomcatbin)
Obtendo o diretório de carregamento da segunda classe (ou seja, obtendo o diretório de carregamento de uma determinada classe durante a execução)
1.1) Método geral um (seja um projeto java geral ou um projeto web, primeiro localize o diretório de primeiro nível onde você pode ver o caminho do pacote)
InputStream is=TestAction.class.getClassLoader().getResourceAsStream("test.txt");
(O caminho do arquivo test.txt é nome do projetosrctest.txt; o diretório de primeiro nível do pacote onde a classe TestAction está localizada está no diretório src)
Na fórmula acima, basta substituir TestAction e test.txt pelo nome da classe e nome do arquivo correspondentes.
1.2) Método geral dois (este método é semelhante ao método 1.1, exceto que este método deve começar com '/')
InputStream is=Test1.class.getResourceAsStream("/test.txt");
(O caminho do arquivo test.txt é nome do projetosrctest.txt, e o diretório de primeiro nível do pacote onde a classe Test1 está localizada está no diretório src)
Obtendo o diretório raiz dos três projetos web (após o lançamento)
1 Começando pelo servlet
Você pode criar um servlet e escrever a seguinte instrução em seu método init
ServletContext s1=this.getServletContext();
String temp=s1.getRealPath("/");
O resultado é semelhante a: D:ToolsTomcat-6.0webapps 02_ext (002_ext é o nome do projeto)
Se s1.getRealPath("") for chamado, a saída será D:ToolsTomcat-6.0webapps 02_ext (um a menos "")
2 A partir de httpServletRequest
String cp11111=request.getSession().getServletContext().getRealPath("/");
O resultado é semelhante a: D:ToolsTomcat-6.0webapps 02_ext
Obtendo o quarto caminho de classe (no Eclipse, obtendo o caminho para o diretório src ou classes)
Método 1 Thread.currentThread().getContextClassLoader().getResource("").getPath()
por exemplo: String t=Thread.currentThread().getContextClassLoader().getResource("").getPath();
System.out.println("t---"+t);
Saída:t---/E:/order/002_ext/WebRoot/WEB-INF/classes/
Método 2 JdomParse.class.getClassLoader().getResource("").getPath() (JdomParse é uma classe em um determinado pacote de src, o mesmo abaixo)
por exemplo:String p1=JdomParse.class.getClassLoader().getResource("").getPath();
System.out.println("JdomParse.class.getClassLoader().getResource--"+p1);
Saída: JdomParse.class.getClassLoader().getResource--/E:/order/002_ext/WebRoot/WEB-INF/classes/
Além disso, se quiser colocar o arquivo em um determinado pacote, você pode obter o arquivo da seguinte maneira (primeiro localize o diretório de último nível do pacote)
por exemplo, String p2=JdomParse.class.getResource("").getPath();
System.out.println("JdomParse.class.getResource---"+p2);
Saída: JdomParse.class.getResource---/E:/order/002_ext/WebRoot/WEB-INF/classes/jdom/ (JdomParse é a classe no pacote jdom no diretório src)