| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/05/2007 14:44:30
|
javinha2004
JavaTeenager
Membro desde: 30/04/2004 09:00:53
Mensagens: 169
Offline
|
Olá, preciso transformar um nome de arquivo longo do windows num nome no formato 8.3, para usá-lo dentro de um programa java.
Tem algum método java ou mesmo chamada de sistema para fazer isso?
Valeu
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/05/2007 16:13:08
|
marcosbrandao
JavaEvangelist
![[Avatar]](/images/avatar/38da053032cb4c18a10fe33f871fc2bd.png)
Membro desde: 17/08/2006 19:03:36
Mensagens: 477
Offline
|
Até onde eu conheço a API do java , não tem benhum metodo que faça isso.
Tem que fazer na mão mesmo...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/05/2007 16:16:25
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
1) Você pode usar a API do Windows "GetShortPathName". Isso quer dizer que precisa usar JNI ou chamar um programa em C que lhe forneça essa informação.
msdn.microsoft.com wrote:
GetShortPathName
The GetShortPathName function retrieves the short path form of the specified path.
DWORD GetShortPathName(
LPCTSTR lpszLongPath,
LPTSTR lpszShortPath,
DWORD cchBuffer
);
...
Declared in Winbase.h; include Windows.h.
Use Kernel32.lib.
Requires Kernel32.dll.
2) Se seu problema é que você quer chamar algum programa (com Runtime.exec, por exemplo) e o(s) nome(s) de arquivo não pode ter espaços, ponha o(s) nome(s) do arquivo entre aspas, que os problemas de espaços costumam se resolver dessa maneira.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/05/2007 18:52:47
|
javinha2004
JavaTeenager
Membro desde: 30/04/2004 09:00:53
Mensagens: 169
Offline
|
VAleu pela dica.
De fato, o meu problema era executar um comando com o Runtime.exec. Sua dica resolveu o problema do nome dos arquivos que são passados como parâmetro para o meu executável, mas não o do nome do executável em si. Ele está na variável path do windows, mas o meu programa parece não enxergar isso. Então tentei passar o caminho completo, mas aí eu caio de novo no problema dos nomes longos, com o agravante de que as aspas não resolvem nesse caso...
Então eu agradeceria muitíssimo se alguém me dissesse como fazer para o meu programa java enxergar o path do windows.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/05/2007 18:54:07
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Amigo, a dica das aspas é exatamente a mesma para parâmetros e nomes de programas. Exemplo:
"C:\Arquivos de Programas\Java\JRE1.6.0_01\JRE\bin\java.exe"
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/05/2007 19:25:53
|
javinha2004
JavaTeenager
Membro desde: 30/04/2004 09:00:53
Mensagens: 169
Offline
|
Mas não está funcionando. Veja esse teste:
Código:
Resultado no arquivo de log:
Mensagem de erro:
Ou seja, ele faz uma confusão e não reconhece o programa...
(copiei e colei a string resultante no DOS e roda...)
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/05/2007 19:41:47
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Quando você digita o arquivo ".pl" no Command Prompt (DOS como você chama), o Windows tenta achar o programa que sabe lidar com arquivos com extensão ".pl", que no seu caso seria o Perl, que provavelmente está instalado em C:\Perl\bin\perl.exe. Na minha máquina, por exemplo, digitei os seguintes comandos e o Windows me informou isto:
Então o Command Prompt na verdade tenta executar:
C:\perl\bin\perl "C:\Arquivos de programas\Text-NSP-1.03\bin\count.pl"
Uma das formas de você resolver esse problema é passar o nome do programa (que não é .PL - programas no Windows só podem terminar por .EXE ou .COM), e sim PERL.EXE.
|
|
|
 |
|
|