Abrir qualquer arquivo pelo java

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();
1 curtida

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

4 curtidas

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.