Tenho uma função que retorna um objeto File.
Necessito pegar deste File apenas o caminho, desconsiderando o arquivo. Por exemplo, de “C:\teste.txt”, preciso capturar apenas o “C:”.
getPath(), getCanonicalPath() e getAbsolutePath() retornaram o nome do arquivo junto.
Eu particularmente não lembro um método que faça isso (pois acho que nunca precisei), mas após retornar uma String com o caminho completo (mesmo com o nome do arquivo junto), você pode trabalha-la (Usandos a API String) e capturar apenas a parte que você quer.
L.Bach
Valeu, Jair.
Obrigado pela dica.
R
Razec
Bom dia L.Bach,
Acredito que um substring ajudaria você, fiz um teste rápido aqui de uma olhada.
// Recebe o arquivo de um método qualquer...Filefile=objetoQualquer.getFile();// Pega o caminho completo do arquivoStringcaminhoCompleto=file.getAbsolutePath();/*Pegaoindicedaúltimabarrainvetidaeadiciona*umparaqueabarrasejaincluídanasubstring.Se*oíndicedabarrafor-1,significaquenãofoi*encontradoaquelecaracter(osistemaoperacionaldeve*seroutroquenãoWindows.Então,pegamosoíndiceda*barracomum(enãodainvertida).*/intindiceBarra=caminhoCompleto.lastIndexOf("\")+1;if(indiceBarra==0){indiceBarra=caminhoCompleto.lastIndexOf("/")+1;}// Basta pegar o substring com o caminho da pasta.StringcaminhoPasta=caminhoCompleto.substring(0,indiceBarra);
L.Bach
Razec,
Dessa forma, sempre receberei fixo a raiz, e o que busco, na verdade, é o caminho inteiro até chegar ao arquivo.
Marcos Biscaro,
Exatemente isso!
Valeu pessoal
Abraço
juliano_FRG
Pegue o diretório superior do arquivo através do método getParent(), por exemplo:
public static void getPath()
{
File f = new File("D:\JULIANO\Mapa 03.pdf");
System.out.println("isFile: " + f.isFile());
System.out.println("getPath: " + f.getPath());
System.out.println("getParent: " + f.getParent());
}