2016-07-13 1 views
0

私のユースケースは、設定ファイル用のディレクトリが与えられているかどうかです。これは既に存在する場合と存在しない場合があります。それが既に存在するなら、私はそれを読んでみたいと思います。もしそうでなければ、そのファイルを使って将来的にユーザが設定できるいくつかのデフォルトを書きたいと思います。ファイルが存在するかどうかにかかわらず、パスが読み書き可能であることを確認するにはどうすればよいですか? NodeJS

(そのファイルが既に存在するかどうかにかかわらず)そのパスのファイルに読み書きする権限がない場合、そのエラーを修正して報告することができます。

+0

'A +' モードでsyncOpen(唯一のデフォルトが追加されるだろう、それは新しいファイルだった場合にのみ):同じように使用でき

function canReadAndWrite(targetPath) { return new Promise((resolve, reject) => { fs.stat(targetPath, (err) => { if (err) { reject(err); return; } fs.access(targetPath, fs.W_OK | fs.R_OK, (err) => { if (err) { const dir = path.dirname(targetPath); fs.access(dir, fs.W_OK | fs.R_OK, (err) => { if (err) { reject(err); return; } resolve(false); }); } resolve(true); }) } }); } 

? https://nodejs.org/api/fs.html – user2864740

+0

あなたは 'fs'モジュール' fs.access'でファイル許可をチェックできます – uzaif

答えて

1

これは間違いなくリファクタリングを使用する可能性がありますが、実行可能なアプローチのようです。私は、より簡単な方法があると思う。他の誰かがこれにもっと良い答えを与えることを望んでいる。

canReadAndWrite('/var/lib/test/config.json').then((exists) => { 
    if (exists) { 
     // safely read file 
    } else { 
     // safely write file 
    } 
}).catch((error) => { 
    console.log('nope'); 
}); 
関連する問題