Nomes de arquivo do windows

6 respostas
J

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

6 Respostas

marcosbrandao

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…

T
  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.
  1. 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.
J

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.

T

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”

J

Mas não está funcionando. Veja esse teste:
Código:

String deb = "\"C:\Arquivos de programas\Text-NSP-1.03\bin\count.pl\"";
logger.debug("COUNT SOZINHO: " + deb);
Runtime.getRuntime().exec(deb);

Resultado no arquivo de log:

COUNT SOZINHO: "C:\Arquivos de programas\Text-NSP-1.03\bin\count.pl"

Mensagem de erro:

Cannot run program: ""C:\Arquivos":CreateProcess error=193, %1 não é um aplicativo Win32 válido.

Ou seja, ele faz uma confusão e não reconhece o programa…
(copiei e colei a string resultante no DOS e roda…)

T

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:

D:\>assoc .pl
.pl=Perl

D:\>ftype Perl
Perl="C:\Perl\bin\perl.exe" "%1" %*

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.

Criado 28 de maio de 2007
Ultima resposta 28 de mai. de 2007
Respostas 6
Participantes 3