Para Desenvolvedores

Criação e leitura de arquivo no diretório www

Resolvido

Olá, pessoal!

Preciso criar um arquivo json em uma classe java e salvá-lo no diretório lumisportal/www. Também preciso fazer a leitura desse arquivo posteriormente.

Consegui retornar o caminho até o diretório através de PortalContext.getRootPath(), porém vi que o método está deprecated.

Existe uma forma mais adequada de fazer o acesso ao WWW via java na versão 11.1.1 do produto?

Por Rodrigo Fernandes

Em 04/04/19 14:20

Acompanhar pergunta

3 resposta(s):

Ordenar por:

Em princípio, pode não fazer sentido escrever em "lumisportal/www". Normalmente, queremos escrever no diretório WWW de algum website. Por acaso, pode ser que "lumisportal/www" seja o Webroot de algum website.
Então, pra isso, primeiro você deve saber em qual website você quer escrever. 

Não existe API estável para obter os websites do portal. Mas se você quiser, pode usar a API interna (com risco da mesma ser alterada em versões futuras) IWebsiteManagerSPI (obtido pelo ManagerFactoryInternal). Nessa API há dois métodos: um para obter o website default e outra para obter o website de um canal.

Uma vez com o website, você pode criar um PortalFilePath usando no construtor o web root base folder do website e o caminho relativo do arquivo que você precisa ler/escrever.

Depois, você pode transformar o PortalFilePath em um arquivo do portal e pode usar esse arquivo.

Lembrando que essa solução envolve uso de API não estável.

Att.

Por Thiago Berne

Em 04/04/19 14:38
Editado em 04/04/19 14:39

Se vc estiver em um escopo que tenha um IServiceInterfaceRequest, pode obter o website de forma estável com request.getWebsiteBaseURL().getWebsite()

Por Rodrigo Cesar

Em 04/04/19 14:58

 

Usando o API interno (com os riscos que Berne postou em cima)....

Dado uma instancia de serviço, voce pode pegar o canal dele. Use esse channelId para descobrir qual é o website desse canal.  Seguinte codigo mostra como escrever um arquivo num diretorio no www do seu website.

 

String diretorioNoWWWOndeQuerEscreverUmArquivo = "diretorioNoWWW";
String nomeDoArquivo = "valores.txt";
String fileContent = "conteúdo do arquivo";
String serviceInstanceChannelId = "XXXXXXXX-GUID";  // calcule isso

IWebRootPortalBaseFolder folder = ManagerFactoryInternal.getWebsiteManager().getWebsiteByChannelId(serviceInstanceChannelId ).getWebRootBaseFolder();
IFile dir = new PortalFilePath(folder, diretorioNoWWWOndeQuerEscreverUmArquivo).toFile();
IFile file = dir.resolve(nomeDoArquivo);

file.write(fileContent.getBytes("UTF-8"));

 

 

 

Por Kishnan Nedungadi

Em 04/04/19 15:32
Editado em 04/04/19 15:33

Entrar

Interaja com a comunidade e tenha acesso a conteúdos exclusivos.

Houve algum erro ao acessar o banco de dados. Tente novamente mais tarde.