2015-03-18 2 views
1

Je suis nouveau à NodeJS et j'ai du mal à déchiffrer la valeur du mode et à trouver comment changer le mode pour supprimer un attribut comme en lecture seule. Voici comment j'ai trouvé ce dossier pour avoir un mode de 16822. Comment puis-je déterminer ce que 16822 signifie dans Windows, puis comment puis-je changer de mode afin qu'il n'a pas un attr seulement en lecture?nodejs fs mode de manipulation dans l'attribut de lecture seule Windows

fs.mkdir('./build'); 
fs.stat('./build', function(err, stats){ 
    if(stats.isDirectory()){ 
     console.log('Its a dir'); 

     for(var i in stats){ 
      if('function' !== typeof stats[i]){ 
       console.log(i + '\t= ' + stats[i]); 
      } 
     } 
    } 
}); 
+0

Eh bien, si rien ne fonctionne, vous pouvez appeler à 'attrib'. –

Répondre

0

J'ai trouvé la solution. Fondamentalement, la différence de bits entre un fichier avec readonly et sans était une valeur de 146. Vérification des bits que j'ai trouvé cette différence correspondait dans la valeur de mode (128, 16 et 2). Ce fut ma solution: github issue with readonly

a également fait une amélioration où je passe le courant à une fonction qui me permet de transformer le fichier passe ensuite le long de l'aide-flux d'événements:

function removeReadonly(){ 
    function transform(file, cb){ 
    if((file.stat.mode & 146) == 0){ 
     file.stat.mode = file.stat.mode | 146; 
    } 
    cb(null,file); 
    }; 

    return require('event-stream').map(transform); 
}; 
2

Je crois 0x92 (146) est incorrect. 0x92 inspecte le bit d'écriture 'other' et le bit d'exécution 'group'. Ce qu'il devrait être est 0x222 (546).

Paramètres d'accès aux fichiers de différents fichiers sont:

4000: Fichier

2000 cachée: fichiers système

1000: Archive bit

0400: individuel lire

0200 : Individuel écrire

0100: individuel exécuter

0040: Groupe lire

0020: Groupe écrire

0010: Groupe execute

0004: Autre lecture

0002: Autre écriture

0001: Autres exécuter

où 1 représente exécuter, 2 représente écrire et 4 REPRÉSENTE lire

voir http://www.codingdefined.com/2014/10/alter-file-permissions-in-nodejs.html

+0

J'avais essayé 222 à l'origine mais cela ne fonctionnait pas dans Windows. Je pense que c'est la différence ici. – Csharpfunbag

+0

Les attributs de fichier sont exprimés en octal et non en hexadécimal. 146 est 222 en octal (correct). 546 est 1042 en octal (incorrect). – error