Pessoal utilizo a IDE Netbeans, e gostaria de saber qual é o código que utilizo pra abrir qualquer arquivo. Por exemplo se quero abrir uma imagem ele abre, se quero abrir um txt ele abre, somente abrir o arquivo, como se clicasse duas vezes nele.
Abraços!
cara naum entendi direito sua pergunta…
mais se vc quiser abrir um arquivo a partir do caminho dele use este código abaixo…
Process pro = Runtime.getRuntime().exec("cmd.exe /c D://teste.pdf";
pro.waitFor();
Na verdade o windows abre qualquer arquivo porque ele tem armazenado uma espécie de relação da extensão com os programas instalados, tipo… extensao pdf -> abrir com acrobat reader… extensão txt -> abrir com bloco de notas… e assim por diante… se vc fizer utilizando o runtime como o amigo citou acima vai funcionar, é uma boa saída… se utilizar somente em windows… ou senão vc pode analizar a extensão que é o arquivo e chamar o programa designado… tipo fazer um switch de acordo com a extensão ou alguns if-else …
java.awt.Desktop.getDesktop().open( new File( "arquivo" ) );
http://download.oracle.com/javase/6/docs/api/java/awt/Desktop.html
http://download.oracle.com/javase/6/docs/api/java/awt/Desktop.html#open(java.io.File)
[]´s
Notem que a solução do David é muitíssimo melhor que a do Francow por ser multiplataforma e não disparar necessariamente um processo externo intermediário.
Quando possível, evitem o Runtime.exec.
Realmente faltou fazer essas observações.
Obrigado Vinícius!
[]´s
Pessoal os códigos funcionaram perfeitamente, vou utilzar a classe Desktop mesmo.
Obrigado a todos e Abraços!
Amigos,
porém esta solução mais apropriada, segundo o Vinny, é nativa do java6 certo?
pro java 4, o modo seria continuar pelo Runtime.exec ? ou há uma maneira melhor ainda ?
Obrigado!
Aí não tem muito o que fazer… Runtime.exec na veia.
Mas é uma boa idéia deixar o comando específico do Runtime.exec num arquivo de configuração, nem que seja para o suporte mexer caso algum usuário reclame.
Obrigado Vinny,
é, vai ser o véio de guerra mesmo então!!!
Esperamos em breve migrar para o 1.6, ai sim acabaria com essa chamada ‘forçada’!
Vlw!
[quote=davidbuzatto]java.awt.Desktop.getDesktop().open( new File( "arquivo" ) );
http://download.oracle.com/javase/6/docs/api/java/awt/Desktop.html
http://download.oracle.com/javase/6/docs/api/java/awt/Desktop.html#open(java.io.File)
[]´s[/quote]
tirando minha duvida atraves do seu codigo estou querendo abrir o meu Skype em uma segunda janela e pra fazer isto no modo normal eu teria q Ir em executar e digitar
“C:\Program Files (x86)\Skype\Phone\Skype.exe” /Secondary
<- varia do seu windows aonde está instalado seu Skype ou ate mesmo pelo cmd.exe digitando isto. porem lendo seu codigo me veio isto a cabeça porem quando vamos escrever ali da um errinho porem se eu tirar o /Secondary ele abre o meu que já esta aberto e eu nao quero abrir o meu e sim uma segunda janela. se alguem poder me ajudar so nesse errinhu Obrigado.
public class RunSkype {
public static void main(String[] args) throws IOException {
try{
System.out.println("Abrindo uma nova janela skype");
java.awt.Desktop.getDesktop().open( new File( "C:\Program Files (x86)\Skype\Phone\Skype.exe"+ "/Secondary" ) );
}
catch(IllegalArgumentException e1){
System.out.println(e1);
}
}
}
java.lang.IllegalArgumentException: The file: C:\Program Files (x86)\Skype\Phone\Skype.exe\Secondary doesn’t exist.
Galera estou tentando abrir um arquivo .jpg e está me gerando uma exception - No application is associated with the specified file for this operation.
txt e pdf ele abre normalmente , o que devo fazer ? não encontrei nada a respeito até agora !
Clica com o botão direito em cima desse .jpg e escolha Abrir como… e associe um programa à esse tipo de arquivo.
[quote=davidbuzatto]java.awt.Desktop.getDesktop().open( new File( "arquivo" ) );
http://download.oracle.com/javase/6/docs/api/java/awt/Desktop.html
http://download.oracle.com/javase/6/docs/api/java/awt/Desktop.html#open(java.io.File)
[]´s[/quote]
E no Linux?
Pronto, encontrei a solução:
http://ubuntuforums.org/showthread.php?t=1935692
Para Linux, só funciona com o Gnome, porém é preciso instalar o pacote libgnome2-0
sudo apt-get install libgnome2-0
Depois é só correr pro abraço! :thumbup:
[quote=davidbuzatto]java.awt.Desktop.getDesktop().open( new File( "arquivo" ) );
http://download.oracle.com/javase/6/docs/api/java/awt/Desktop.html
http://download.oracle.com/javase/6/docs/api/java/awt/Desktop.html#open(java.io.File)
[]´s[/quote]
Como lidar com URLs para o ambiente Windows que possuem espaços em branco no endereço de um diretório?
[quote=ViniGodoy]Notem que a solução do David é muitíssimo melhor que a do Francow por ser multiplataforma e não disparar necessariamente um processo externo intermediário.
Quando possível, evitem o Runtime.exec. [/quote]
Bom lembrar de observar por esse lado mesmo
para que as coisas não saiam do controle.
Vou estudar sobre o assunto de evitar disparar processos
externos para coisas que podem ser resolvidas internas mesmo.
Boa noite a todos.
Pessoal, eu estou com um dúvida muito chata e ainda sou noob nisso. É o seguinte, eu criei um interface gráfica simples no netbeans, onde só há 2 botões “Ligar” e “Desligar”. Essa interface tem um código em java que roda um .exe gerado de um código em C compilado no DevC. O objetivo disso é de controlar o pino 25 da porta paralela, contudo fiz isso no windows. No linux eu instalei o GNU C++ compiler e modifiquei algumas coisas no arquivo .c, fiz a mesma interface no NetBeans, mas não sei como rodar o arquivo em C por que ele não gera um .exe e sim e arquivo chamado “a.out”, que por acaso eu nunca ouvi falar. Antes que perguntem por que eu não controlo a porta paralela com um código em java é por que já pesquisei muito e não achei como fazê-lo, se vocês puderem me manda links ou até como fazer isso ficaria extremamente agradecido.