Ele te mostrará o caminho que o Java assume para essa pasta.
G
Guilherme_Americo
Pegue uma referência do ServletContext (getServletContext() da classe HttpServlet) e depois use o método getResource(String). Assim você terá acesso a qualquer recurso dentro da sua aplicação. Ex:
Quero o teste.txt que está dentro do diretório WEB-INF/docs
getResource(/WEB-INF/docs/teste.txt);
Até mais.
C
carlosgeiser
Olá Guilherme,
voce poderia mostra um exemplo de como fazer dessa forma que voce está sugerindo ?
G
Guilherme_Americo
Dentro de seu servlet substitua:
por:
sendo que arquivo.txt tem que estar na raiz da sua aplicação, ao lado da pasta WEB-INF. Consulte também na documentação o método getResourceAsStream() da classe ServletContext.
Até mais…
asclows
Quando dentro de um Servlet, Ok, consigo mesmo acessar pelos métodos fornecidos por ele, mas como faço por exemplo para obter o caminho real para um arquivo xml que está em /WEB-INF/classes em uma classe não-servlet. Estou criando um DAO baseado em xml mas não encontra o arquivo para realizar o parser:
public XmlHistoriaDAO() throws IOException, JDOMException {
SAXBuilder builder = new SAXBuilder();
Document document = builder.build("/WEB-INF/classes/Historia.xml");
root = document.getRootElement();
}
O código acima me dispara uma IOException
asclows
Com isso eu consigo pegar o caminho correto para o arquivo informando o caminho relativo.
public XmlHistoriaDAO() throws IOException, JDOMException { InputStream in = getClass().getResourceAsStream("../../../../Historia.xml"); SAXBuilder builder = new SAXBuilder(); Document document = builder.build(in); root = document.getRootElement(); }
asclows
Para escrever no arquivo fiz o seguinte:
publicvoidupdate(Historiahistoria)throwsIOException,JDOMException{Elementelement;URIuri;Filefile;FileOutputStreamfout;XMLOutputterserializer;try{element=root.getChild("texto");element.setText(historia.getTexto());Stringarquivo="../../../../../Historia.xml";uri=getClass().getResource(arquivo).toURI();// toURI() pode ser substituido por toString()file=newFile(uri);fout=newFileOutputStream(file);serializer=newXMLOutputter();serializer.output(document,fout);fout.flush();fout.close();}catch(URISyntaxExceptione){System.out.println("Caminho para arquivo Historia.xml invalido");}}
johnnycoppini
Aproveitei a carona ai…
tinha a mesma dúvida e agora está resolvido. :lol:
Na verdade tenho mais uma dúvida: Tem como descobrir a URL completa apartir de uma classe não servelet? :?
Obrigado
F
FSR
Eu estava com o mesmo problema do Carlos Geiser e consegui resolver colocando o método abaixo na minha classe servlet:
Desta forma o nomedosuearquivo.properties pode ser colocado em qualquer pasta do projeto, no meu caso coloquei em /WEB-INF/classes/arquivo.properties!
F
FSR
para criar um arquivo.properties no eclipse clique com o botão direito em qualquer pasta dentro do projeto escolha new >>> file >>> coloque o nome do arquivo sempre com a extensão .properties.
Depois de criado coloque os valores que quiser dentro do arquivo da seguinte forma:
teste1=8554555
teste2=123456
para ler estes valores basta chamar o método lerProperties() postado na mensagem anterior da seguinte forma: