Comandos e nomes de diretórios do Linux no Java  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
tiago_stos
JavaChild

Membro desde: 02/06/2006 07:25:09
Mensagens: 115
Localização: Caçapava - SP
Offline

Bom dia pessoal.

Estou desenvolvendo um programa que irá usar alguns comandos do do programa ImageMegick. Consigo executar o programa perfeitamente, porém estou tendo problemas no Linux quando um diretório ou um arquivo tem espaços em seus nomes. No Windows esse problema foi facilmente resolvido colocando aspas (") no caminho do arquivo, ficando da seguinte forma:



Porém no Linux isso não funcionou. Outra tentativa no Linux foi acrescentar barras no nome do arquivo e/ou diretório antes do espaço, da forma como é feito no shell do Linux, como no exemplo:



Porém também não obtive sucesso.

Alguém sabe como resolver esse problema?

Econodin - Organizador Financeiro Pessoal
e-Karros - Sistema de controle de manutenção automotiva
[WWW]
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline



ou



Eu aconselharia a segunda forma - é mais clara, mais simples e mais próxima ao que você faria no Linux "manualmente". (Espaços em nomes de diretórios não são "kosher" em Unix ou Linux, já que a maior parte dos programas e scripts tem problemas com eles. Tente não usá-los.)
tiago_stos
JavaChild

Membro desde: 02/06/2006 07:25:09
Mensagens: 115
Localização: Caçapava - SP
Offline

Cara, pior tentei das duas formas e não funcionou... não acredito que esteja fazendo algo de errado já que para arquivos e diretórios sem espaços o comando funciona.
Sobre não usar arquivos e diretórios com espaços nos nomes, eu já tenho como regra não utilizar, porém como pretendo distribuir esse programa é melhor eu descobrir como resolver isso.

Alguém tem mais alguma dica?

Econodin - Organizador Financeiro Pessoal
e-Karros - Sistema de controle de manutenção automotiva
[WWW]
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

Hum... eu não gosto muito de usar o Runtime.exec que recebe apenas um parâmetro. Prefiro aquele que recebe um array como parâmetro, para que o próprio Runtime.exec ponha as aspas necessárias para o comando não se enrolar todo.

De qualquer maneira, "Imagem 01.JPG" é diferente de "Imagem 01.jpg" e não sei se o "identify" está no PATH do usuário que executa seu programa Java. (Por exemplo, se esse programa Java é o Tomcat e ele é iniciado como daemon, ele deve usar outro PATH que não o do seu usuário. )
tiago_stos
JavaChild

Membro desde: 02/06/2006 07:25:09
Mensagens: 115
Localização: Caçapava - SP
Offline

Então, o caminho e nome do arquivo está correto e o identify está instalado... Bom, to no inicio do projeto ainda, depois vou validar todas essas informações para que não haja nenhum erro.
Vou experimentar com o Runtime.exec que recebe o array. Muito obrigado pelas dicas.

Econodin - Organizador Financeiro Pessoal
e-Karros - Sistema de controle de manutenção automotiva
[WWW]
tiago_stos
JavaChild

Membro desde: 02/06/2006 07:25:09
Mensagens: 115
Localização: Caçapava - SP
Offline

entanglement, realmente passando as informações como um array de Strings funciona. Ficou da seguinte maneira:



Muito obrigado.

Econodin - Organizador Financeiro Pessoal
e-Karros - Sistema de controle de manutenção automotiva
[WWW]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team