2 Stimmen

Was ist der richtige Weg, um einen Pfad anzufügen?

Ich akzeptiere ein Verzeichnis als Befehlszeilenargument für eines meiner Skripte. Es gibt zwei Dinge, die ich tun möchte. Erstens möchte ich bestätigen, dass der übergebene Pfad ein Verzeichnis ist. Zweitens möchte ich den Pfad um Unterverzeichnisnamen erweitern (ich kenne die Unterverzeichnisnamen im Voraus). Gibt es Funktionen in der Bibliothek, die automatisch ein abschließendes / Zeichen dem Pfad hinzufügen, falls es fehlt, oder muss ich dies manuell überprüfen?

Zum Beispiel, wenn /Benutzer/lokal übergeben wird, muss ich /bin zum Pfad hinzufügen, während ich bin hinzufügen muss, wenn der Pfad /Benutzer/lokal/ übergeben wird.

Vielen Dank für die Hilfe.

3voto

David Weldon Punkte 61742

Es scheint, als würdest du einfach path.join, fs.existsSync und fs.statSync verwenden wollen

var path = require('path');
var fs = require('fs');

var dir = process.argv[2];

console.log(dir);
console.log(fs.existsSync(dir) && fs.statSync(dir).isDirectory());
console.log(path.join(dir, 'mysubdir'));

Also, wenn ich das obige wie folgt ausführe: node test.js /tmp werde ich erhalten:

/tmp
true
/tmp/mysubdir

0voto

Microfed Punkte 2772
var tail = 'bin/test/',
    path = arg[arg.length-1] === '/' ? arg + tail : arg + '/' + tail;

Oder habe ich etwas übersehen? :)

0voto

jfriend00 Punkte 632952

Sie können die Logik in eine kurze Funktion einfügen, die sicherstellt, dass zwischen den beiden Teilen genau ein "/" vorhanden ist:

function appendToPath(orig, add) {
    return orig.replace(/\/$/, "") + "/" + add.replace(/^\//, "");
}

var newPath = appendToPath("/Benutzer/lokal", "bin");

oder

var newPath = appendToPath("/Benutzer/lokal/", "/bin");

oder

var newPath = appendToPath("/Benutzer/lokal", "/bin");

Sie geben alle "/Benutzer/lokal/bin" zurück.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X