nomes de arquivo do windows  XML
Índice dos Fóruns » Assuntos gerais (Off-topic)
Autor Mensagem
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
marcosbrandao
JavaEvangelist
[Avatar]

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...
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.


[WWW]
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.
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"
[WWW]
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...)
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.

[WWW]
 
Índice dos Fóruns » Assuntos gerais (Off-topic)
Ir para:   
Powered by JForum 2.1.8 © JForum Team