Boa noite,
Estou desenvolvendo uma aplicação que cria uma pasta no sistema de arquivos e abre utilizando o gerenciador de arquivos do sistema. Como estou utilizando o Linux Mint, os testes estão sendo realizados com o nemo.
Utilizando o código :
Runtime run = Runtime.getRuntime(); run.exec("nemo"+CaminhoDoDiretorio);
o aplicativo só funciona se não houver espaços. caso haja algum o nemo
entende cada espaço como um diretório diferente. Já tentei usar das
seguintes maneiras: nemo /home/hash/Área de Trabalho nemo /home/hash/Área\ de\ Trabalho nemo "/home/hash/Área de Trabalho" nemo "/home/hash/Área\ de\ Trabalho"
Mesmo não tendo nenhuma ajuda, vou postar a resposta caso outra pessoa tenha a mesma dúvida:
Utilizando o run.exec() diretamente não consegui, então criei um script, salvei ele no sistema de arquivos e utilizei o " run.exec("/bin/bash script") " para executá-lo.
Segue abaixo o código:
try {
String diretorio = "/home/usuario/Área\ de\ Trabalho\"
OutputStreamWriter output = new OutputStreamWriter(new FileOutputStream("tmp/abrirnemo"),"UTF-8");//Crio o arquivo em codificação utf-8
//String que conterá o conteúdo do meu script
String nemo = "function AbrirNemo(){\n" +
" nemo \"\""+diretorio+"\"\"\n" +
"}\n" +
"\n" +
"AbrirNemo";
output.write(nemo);//escrevo o script no sistema de arquivos
output.close();//fecho o output
File f = new File("tmp/abrirnemo");//crio um arquivo com o path do meu arquivo.
run.exec("chmod +x tmp/abrirnemo");//seto o meu arquivo com +x, que significa que ele poderá ser executado como programa
run.exec("/bin/bash "+f.getAbsolutePath());//executo o arquivo. passeio f.getabsolute para que o caminho completo seja passado ao terminal.
} catch (IOException ex1) {
JOptionPane.showMessageDialog(this, "Não foi possível abrir o Gerenciador e Arquivos.");
}
obs.: Não testei com outros gerenciadores de arquivos, como nautilus, dolphin ou thunar.