Som novinka v NodeJS a mám ťažké časydešifrovať hodnotu režimu a určiť, ako zmeniť režim, ak chcete odstrániť atribút, ako napríklad len na čítanie. Tu je návod, ako som zistil, že tento priečinok má režim 16822. Ako môžem určiť, čo 16822 znamená v oknách a ako môžem zmeniť režim tak, aby nemal len attr pre čítanie?
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]);
}
}
}
});
odpovede:
2 pre odpoveď č. 1Verím, že 0x92 (146) je nesprávny. 0x92 skontroluje "iný" zápisový bit a bit "execute group". Malo by to byť 0x222 (546).
Nastavenia prístupu k súborom rôznych súborov sú:
4000: skrytý súbor
2000: systémový súbor
1000: Archívny bit
0400: Individuálne čítanie
0200: Individuálny zápis
0100: Individuálne vykonanie
0040: Čítanie skupiny
0020: Skupina napíše
0010: Skupina vykoná
0004: Ďalšie čítanie
0002: Iný zápis
0001: Iné vykonať
Ak 1 predstavuje vykonanie, 2 predstavuje zápis a 4 znamená čítanie
vidieť http://www.codingdefined.com/2014/10/alter-file-permissions-in-nodejs.html
0 pre odpoveď č. 2
Našiel som riešenie. V zásade bol rozdiel medzi súborom s čítanou a bezčítanou hodnotou 146. Pri kontrole bitov som zistil, že tento rozdiel sa zhoduje s hodnotou režimu (128, 16 a 2). Toto bolo moje riešenie: github vydanie s readonly
Taktiež došlo k zlepšeniu, keď som preniesol prúd na funkciu, ktorá mi umožňuje transformovať súbor a potom ho preniesť pomocou streamu udalostí:
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);
};