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.
// Recebe o arquivo de um método qualquer...
File file = objetoQualquer.getFile();
// Pega o caminho completo do arquivo
String caminhoCompleto = file.getAbsolutePath();
/* Pega o indice da última barra invetida e adiciona
* um para que a barra seja incluída na substring. Se
* o índice da barra for -1, significa que não foi
* encontrado aquele caracter (o sistema operacional deve
* ser outro que não Windows. Então, pegamos o índice da
* barra comum (e não da invertida).
*/
int indiceBarra = caminhoCompleto.lastIndexOf("\") + 1;
if (indiceBarra == 0) {
indiceBarra = caminhoCompleto.lastIndexOf("/") + 1;
}
// Basta pegar o substring com o caminho da pasta.
String caminhoPasta = caminhoCompleto.substring(0, indiceBarra);