2014-12-17 8 views
1

node.js에 임시 파일/디렉토리를 만들고 싶습니다. 수익은 1 단계로하기 : 예 경우 파일이 node.js - 임시 파일을 만들기 전에 파일이 있는지 확인하십시오.

  • 을 존재하는 경우

    1. 는 PID, 시간 및 임의 문자
    2. 확인을 기반으로 파일 이름을 생성 이렇게하려면, 나는 간단한 알고리즘을 시도하고있어위한 Node.js를 문서 : 그것은
다음

문제의 파일을 생성하고 반환 :하지 않을 경우

  • 을 반복명시 적으로fs.exists 사용하지 말아야하며, 하나가 아닌 그냥 fs.open를 사용하여 잠재적 인 오류 잡는 것을 말한다 : 내 경우 http://nodejs.org/docs/latest/api/fs.html#fs_fs_exists_path_callback

    을, 나는 그것이 존재하는 경우 파일을 여는에 관심이 아니에요, 나는 엄격 해요 이 아닌 파일 이름을 찾으려고 시도하면이 존재합니다. fs.exists을 사용하지 않는 방법이 있습니까? 또는 fs.exists을 사용하는 경우 향후이 메소드가 사용되지 않게 될까봐 걱정해야합니까?

  • +0

    이와 같은 파일 이름 형식을 사용하면 파일 이름이 중복 된 문제가 발생할 수 있습니다. – mscdex

    +0

    나는 또한 "_2"와 같은 이름에 접미사를 추가하는 것이 좋습니다. 1 – micnic

    +0

    @micnic 좋은 포인트로 돌아가는 것이 아니라 동일한 파일 이름을 임의로 생성하는 (작은) 기회를 방지합니다. 일단. 또한 최대 시도 횟수를 제한하기 위해 알고리즘을 약간 수정할 가치가 있습니다.이 질문을 위해서 위 알고리즘은 충분합니다. – user2221343

    답변

    3

    'wx' 플래그를 사용하여 fs.open 플래그를 사용하십시오. 그러면 파일이 존재하지 않으면 생성하고 이미 존재하는 경우 오류를 반환합니다.

    그런 식으로 fs.exists 수표와 fs.open 호출 사이에 파일이 생성되어 파일을 만들 가능성이 있습니다.

    +0

    그게 좋습니다! 하나의 질문이지만 fs.open의 오류는 파일이 이미 존재하고 다른 IO 오류 (너무 많은 파일이 열리는 등 ...) 때문이라고 어떻게 말할 수 있습니까? – user2221343

    +0

    @ user2221343, 오류 메시지에서 어떤 오류가 발생했는지 구분할 수 있습니다. – micnic

    +0

    @ user2221343 오류 개체는 특정 오류를 구분하는 데 필요한 세부 정보를 포함합니다. 이 경우에 당신이 얻는 것을보기 위해 약간의 테스트를 만드십시오; EEXIST 오류 일 가능성이 높습니다. – JohnnyHK