2014-09-07 4 views
0

J'essaie d'utiliser OS.File pour détecter si l'utilisateur a tapé un chemin absolu, ou juste un nom de dossier. J'utilise OS.File.split et cherche l'attribut absolute. Toutefois, pour Windows, il retourne vrai pour absolu, même pour quelque chose comme ça \\blah\\rawr alors ce que je fais est en train de vérifier le lecteur.OS.File pour savoir si l'utilisateur a tapé juste un nom de dossier ou un chemin absolu

Est-ce un bon moyen multi-plateforme/os pour tester si son absolu ou juste un chemin de dossier?

var tp = '\\rawr\\rawr\\my new profile' //var typedPath 
var tpSplit = OS.Path.split(tp); //var typedPathSplit 
console.info('tpSplit:', tpSplit); 
var IsAbsolute = 'winIsAbsolute' in OS.Path ? tpSplit.winDrive ? true : false : tpSplit.absolute; 

Ceci sert à créer un nouveau profil. Si l'utilisateur tape simplement un nom, alors c'est un profil relatif, si l'utilisateur tape un chemin absolu par rapport à un profil non relatif, je fais OS.File.makeDir(tp, {from:tpSplit.components[0]}) pour créer le répertoire. (J'espère {from:tpSplit.components[0]} ne pas causer des problèmes sur Linux dans les composants linux [0] est vide comme /home/desktop/new folder )

Répondre

1

chemins absolus Unix commencent par /

function isAbsolute(path){ 
    if("winIsAbsolute" in OS.Path){ 
    return OS.Path.winIsAbsolute(path); 
    } 
    else{ 
    return path[0] == "/"; 
    } 
} 
+0

Merci homme ouais je l'ai noté que, dans la question. C'est un problème parce que si l'utilisateur tape cela, et que je dis 'from: tpSplit.components [0]' 'makeDir' échoue. – Noitidart

+0

@Noitidart alors votre question n'est pas comment trouver si un chemin est absolu ou non (j'ai édité ma réponse pour des raisons de clarté) – paa

+0

Pour la partie else ne pouvons-nous pas simplement compter sur 'path.absolute' – Noitidart

Questions connexes