[RESOLVIDO] Como abrir arquivo .ppt pelo java?

Boa noite pessoal,

Gostaria de saber se é possível abrir um arquivo com extensão .ppt por linha de código ?

Eu estava tentando da seguinte forma:

Runtime.getRuntime().exec("open -b com.microsoft.Powerpoint " +  "C:\testes\arquivo.pps");

Só que gera a excessão:

O sistema não pode encontrar o arquivo especificado.

Não sei se está faltando algum detalhe, alguém pode da uma força ? :smiley:

da uma pesquisada na api do apache poi

Runtime.getRuntime().exec("cmd /C C:\testes\arquivo.pps");

Utillize assim. Ah certifique que o arquivo existe rs :roll:

É eu estou utilizando essa biblioteca mesmo, mais não encontrei nela uma forma de abrir um arquivo pelo java!

Funcionou perfeitamente Vinicius agradeço a atenção, e pode deixa que aqui no código eu vou fazer a verificação :smiley:

Boa noite pessoal,

Vale ressaltar que se tiver um nome de diretório ou nome de arquivo com espaço em branco compila, executa porém não abre o arquivo !

Por exemplo:

Runtime.getRuntime().exec("cmd /C C:\testes\arquivo um.ppt"); 

ou

Runtime.getRuntime().exec("cmd /C C:\testes um\arquivo um.ppt"); 

:smiley:

Uma solução mais multiplataforma para esta situação seria utilizar a classe Desktop

File file = new File("/caminho/nomeDoArquivo.ppt"); // arquivo a ser aberto if (Desktop.isDesktopSupported()) { Desktop desktop = Desktop.getDesktop(); // recebe uma instância da classe Desktop referente ao seu sistema desktop.open(file); // abre o arquivo }

[quote=Eric Yuzo]Uma solução mais multiplataforma para esta situação seria utilizar a classe Desktop

File file = new File("/caminho/nomeDoArquivo.ppt"); // arquivo a ser aberto if (Desktop.isDesktopSupported()) { Desktop desktop = Desktop.getDesktop(); // recebe uma instância da classe Desktop referente ao seu sistema desktop.open(file); // abre o arquivo }[/quote]

:thumbup:
Muito melhor a utilização dessa classe Eric, o Runtime é muito cheio de frescura, vou implementar essa classe nos meus projetos de agora em diante, até porque pelo pouco que eu vi o Desktop se sai muito melhor na interação com o Linux.

Só um detalhe, não consegui fazer funcionar assim.

File file = new File("/caminho/nomeDoArquivo.ppt");
if (Desktop.isDesktopSupported()) {
    Desktop desktop = Desktop.getDesktop();
    desktop.open(file);
}

Tive que fazer assim:

File file = new File("/caminho/nomeDoArquivo.ppt");
if (Desktop.isDesktopSupported()) {
    Desktop desktop = null;
    desktop  = Desktop.getDesktop(); 
    desktop.open(file);
}

Sua correção não faz o menor sentido. No Java, os dois códigos são totalmente equivalentes.

Assim deveria funcionar também:

if (Desktop.isDesktopSupported()) { Desktop.getDesktop().open(new File("/caminho/nomeDoArquivo.ppt")); }

[quote=ViniGodoy]Sua correção não faz o menor sentido. No Java, os dois códigos são totalmente equivalentes.

Assim deveria funcionar também:

if (Desktop.isDesktopSupported()) { Desktop.getDesktop().open(new File("/caminho/nomeDoArquivo.ppt")); } [/quote]

Quando utilzei o Runtime nao poderia ter espaço no endereço, e tive alguns problemas onde eu apontei o arquivo e ele deu problema de que não tinha permissão para executar esse arquivo, o problema de permissão tive no Linux, ja com o Desktop não encontrei esses problemas.

Assim funcionou mesmo :slight_smile:

if (Desktop.isDesktopSupported()) { Desktop.getDesktop().open(new File("/caminho/nomeDoArquivo.ppt")); }

Não estava falando em relação ao Runtime, mas sim em relação aos dois códigos que você postou no tópico anterior usando Desktop. Para o Java, fazer:

Desktop desktop = null; desktop = Desktop.getDesktop();

É equivalente a fazer em uma linha só:

Desktop desktop = Desktop.getDesktop();

Ah, eu também achei estranho… perai…
Achei o que tava dando de errado…

Desktop desktop = new Desktop.getDesktop();

Nossa como aquele new foi parar ali :XD:

Ops, vivo fazendo dessas também, rs.

Antes de encerra o tópico, gostaria de tirar mais uma duvida !

Essa condição isDesktopSupported() não entendi o porque dela, utilizei no meu código sem essa condição e funcionou perfeitamente, o porque devo utiliza-la ?

if (Desktop.isDesktopSupported()) {  
        Desktop.getDesktop().open(new File("/caminho/nomeDoArquivo.ppt"));  
    } 

E também está sendo gerada uma exceção aqui:

Exception in thread "main" org.apache.poi.hslf.exceptions.OldPowerPointFormatException: Based on the Current User stream, you seem to have supplied a PowerPoint95 file, which isn't supported

:?

Abraço !

Porque nem sempre isso vai retornar true.
Lembre-se que a aplicação não vai rodar na sua máquina ou SO sempre.

Se retornar false, vc pode tentar por outra técnica (como o Runtime.exec) ou dar uma mensagem de erro amigável.

Certo Vini entendi, e quanto a exceção:

Exception in thread "main" org.apache.poi.hslf.exceptions.OldPowerPointFormatException: Based on the Current User stream, you seem to have supplied a PowerPoint95 file, which isn't supported 

Fiquei na duvida porque não estou utilizando um powerpoint 95 só 97/2003!

Pode da uma força quanto a isso ?

Agradeço, obrigado. :smiley:

Só poderia se eu fosse o implementador da Apache POI.

ata, blz foi mal :smiley:

tópico finalizado!