2015-04-07 16 views
6

Sto cercando di ottenere il percorso della directory di un file e non sono sicuro di come ottenerlo. Non riesco a trovare un modulo che mi permetta di farlo.Ottieni la directory da un percorso file o dall'URL

Così, per esempio dire che ho questa stringa:

/this/is/a/path/to/a/file.html 

come posso ottenere questo:

/this/is/a/path/to/a 

So che posso usare qualcosa di simile:

path.substr(0, path.lastIndexOf("/") - 1); 

Ma Non sono sicuro che sia un buon metodo come qualcosa che potrebbe essere incorporato nel nodo.

Ho anche provato:

var info = url.parse(full_path); 
console.log(info); 

e il risultato non restituisce quello che sto cercando, che ottiene il percorso completo, compreso il nome del file.

Quindi, c'è qualcosa incorporato nel nodo che può farlo e farlo bene?

+1

http://stackoverflow.com/questions/19811541/nodejs-get-file-name-from-absolute-path – user2879041

+1

che è l'opposto di ciò che voglio . Voglio che il percorso non sia il nome del file –

+0

se hai guardato la risposta e fatto clic sulla documentazione, la funzione direttamente sopra quella che hanno collegato è ciò che stavi cercando – user2879041

risposta

11

Utilizzando path modulo di node.js:

path.dirname('/this/is/a/path/to/a/file'); 

rendimenti

'/this/is/a/path/to/a' 
+0

In realtà restituisce '/ this/is/a/path/to/a', senza l'ultimo '/' – josemmo

+0

aggiornato, buona cattura – Hypaethral

8

Utilizzando JS pianura, questo funzionerà:

var e = '/this/is/a/path/to/a/file.html' 
e = e.split('/')   //break the string into an array 
e.pop()      //remove its last element 
e= e.join('/')    //join the array back into a string 

//result: '/this/is/a/path/to/a' 

O ... se si preferisce un uno di linea (utilizzando regex):

"/this/is/a/path/to/a/file.html".replace(/(.*?)[^/]*\..*$/,'$1') 

//result: '/this/is/a/path/to/a/' 

O ... finalmente , il buon vecchio stile (e più veloce):

var e = '/this/is/a/path/to/a/file.html' 
e.substr(0, e.lastIndexOf("/")) 

//result: '/this/is/a/path/to/a' 
2

Penso che stai cercando path.dirname

-1

Per pianura JavaScript, questo funzionerà:

function getDirName(e) 
{ 
    if(e === null) return '/'; 

    if(e.indexOf("/") !== -1) 
    { 
     e = e.split('/')   //break the string into an array 
     e.pop()      //remove its last element 
     e= e.join('/')    //join the array back into a string 
     if(e === '') 
       return '/'; 
     return e; 
    } 

    return "/"; 
} 


var e = '/this/is/a/path/to/a/file.html' 
var e = 'file.html' 
var e = '/file.html' 
getDirName(e) 
Problemi correlati