Leitura de arquivo - path com espaços

Bom dia,

Minha aplicação faz a leitura dos parametros de conexão de um XML.
Até agora funcionava bem com web servers Linux.

Porém alguns clientes ao instalar no Windows, verificaram que, quando o diretório onde o tomcat está instalado contem espaços (c:/tomcat 6.0.14 ou c:/apache software …), a leitura do arquivo não ocorre pois a aplicação não o localiza.

Segue rotina de leitura:

String fileURL = ConnectionFactory.class.getResource("conexao.xml").getFile();
Conexao conexao = lerXMLConexao(fileURL);
return conexao;

Alguém sabe como tratar isso ?
Desde já, obrigado.

Olá amigo,

já tentou colocar aspas no inicio e fim da URL?

Conexao conexao = lerXMLConexao("\""+fileURL+"\"");   

[]`s

1 curtida

Bom dia Silvio,

Com essa alteração, o caminho onde meu arquivo está localizado é apenas concatenado com o caminho do Catalina_home.

Como eu passo o caminho completo, precisaria de algo que pudesse ler o caminho mesmo contendo espaços.

Tenta substituir os espaços por "\ "
o caminho “c:\pasta do tomcat” ficaria “c:\pasta\ do\ tomcat”

o caractere “” serve para escapar caracteres especiais. no linux não dá problema, pq os diretórios são separados por “/”, já no windows, normalmente eles são separados pro “”, por isso o “\” do exemplo.

embora não tem muito a ver com o assunto, procure sobre expressões regulares no google e sua mente será iluminada.

Olá amigo,

tenta adicionar aquelas aspas na URL completa.
Tipo o windows para ignorar espaço e considerar como um caminho completo precisa colocar o caminho entre aspas, tipo “c:\Arquivos de Programas\Apache …”.
Tenta colocar aquela “”" aspa no inicio e fim da URL completa.

[]`s

Esse problema dos espaços é conhecido e normalmente só há uma maneira simples de resolver: instalar a aplicação em um path sem espaços.
Mesmo a Microsoft, no Windows Vista, viu que isso era problemático e resolveu renomear alguns diretórios:

C:\Documents and Settings -> C:\Users
C:\Documents and Settings<usuario>\Application Data -> C:\Users<usuario>\AppData
etc.

Felizes são os portugueses, pois o diretório dos arquivos de programas no Windows em português ibérico é “C:\Programas”, não essa tradução literal que nós brasileiros* fizemos (“C:\Arquivos de Programas”).

  • E depois nós é que contamos piadas de portugueses…

Pois é… por essa e por outras que recomendamos Linux no WebServer…
Mas…

Obrigado…
[ ]'s

Eu normalmente não uso "next->next->next->finish" para instalar as coisas.

Sou muito desconfiado (gato escaldado).

Normalmente os instaladores tendem a seguir o padrão Microsoft e instalar os programas em "C:\Arquivos de Programas\Apache\Tomcat" ou sei lá em que diretório com espaços.

Em vez disso, mudo o diretório de instalação para algo que não tem espaços e que tem um nome curtinho, para evitar que um nome de arquivo no Tomcat acabe ficando com mais de 254 caracteres.

Então, adotamos sempre o padrão “/usr/java/tomcat/…”

No windows utilizaremos o padrão de “c:/tomcat”, assim não corremos riscos…

O instalador quando executado no windows, além do “Arquivos de Programas”, também coloca o diretório “Apache Software Foundation”…

Para os adeptos do “NNF”, isso passa despercebido…