파일이 있는지를 확인하기 위해 노드 fs()와 같은 방법으로 약간 혼란스러워졌습니다.노드 js-fs 파일이 있습니다 - 조금 혼란스러워집니다
I 수 : (http://nodejs.org/api/fs.html#fs_fs_readfile_filename_options_callback)
fs.readFile('somefile.html', function (err, data) {
if (err) { /* it doesn't */ }
else { /* it does */ }
});
하지만 그 (이 파일이 시간에 없을 것으로 예상된다)
그리고 그 다음이 오류가 아래의 조건을 실행하는 이상한 느낌 fs.exists() (http://nodejs.org/api/fs.html#fs_fs_exists_path_callback)
훨씬 더 논리적 인 느낌fs.exists('somefile.html', function (exists) {
if(exists) { /* it does */ }
else { /* it doesn't */ }
});
,하지만 나는이 읽기 :
"여는 전에 파일이 존재하는지 확인하는 것은 안티 패턴이므로 경쟁 조건에 취약해질 수 있습니다. 다른 프로세스는 fs.exists() 및 fs.open() 호출 사이에서 파일을 제거 할 수 있습니다. 파일을 열어 거기에 없을 때 오류를 처리하십시오. " 나는 '오류 방법'에 대한 가기 전에 내가 이해
- 파일을 확인하는 일반적인 방법이 존재 (등을 열 경우) 무엇
/(아마도 가장 빠른이 될 것이다 너무 깔끔한 대답) - 내 프로그램의 노드를 fs()
논리를 사용하여 간단하다 -
if (file does not exist) { continue the tasks to create it; }
else { read it and respond with it; }
마 당신은 이야기의 도덕적 당신이 존재 할 필요가 없습니다 것입니다
var file = fs.readFileSync('somefile.html');
if (file) { do stuff }
else { error }
을 원하는 일종의을 할 readFileSync을 사용할 수 있습니다
음, gotya. -이 방법의 비동기 버전을 선호 할 것입니다 - 똑같은 방식으로 작동해야합니까? –
과 fs.open과 fs.readfile 사이에서 fs.readfile (async 또는 sync)을 선택하는 이유는 무엇입니까? 죄송합니다 .. –
http://stackoverflow.com/questions/13858909/synchronous-vs-asynchronous-code-with-node-js에서 sync vs async에 대한 자세한 내용을 볼 수 있습니다. 콜백/함수/값은 실행/설정됩니다. – Steven