조만간자살함
20
2019-05-20 19:59:06
2
78

java nio files.delete()


java nio를 이용해서 폴더 및 파일을 삭제하는 기능을 구현하고 있습니다.


파일은 삭제가 잘 되는데 폴더는 삭제를 하면 뭐라고 해야하지 톰캣이 삭제할 폴더를 붙잡고있다고 해야하나

폴더가 삭제가 안되고 윈도우 탐색기에서 삭제를 하려고하면 실행중인 폴더라 접근 권한이 없다고 나오네요.

그러다가 톰캣을 종료시켜 웹 서버를 내리면 그제서야 폴더가 삭제가 됩니다...

에러도 안나오고 도저히 원인을 모르겠어요...


for (int i = 0; i < dirList.size(); i++) {

@SuppressWarnings("unchecked")

Map<String, Object> tempMap = (Map<String, Object>) dirList.get(i);

// 폴더, 파일 삭제

path = Paths.get(Const._ROOT_PATH, (String) param.get("path"), (String) tempMap.get("name"));

if ((Integer) tempMap.get("isDir") > 0) {

if (Files.list(path).count() > 0) {

// 하위 폴더 존재

result = 0;

break;

} else {

// 폴더 DB 삭제

param.put("seq", tempMap.get("seq"));

result = sqlSession.delete("Filemanager.delete_dir", param);

if (result > 0) {

// root 경로에 있는 최상위 폴더 삭제할 때 권한 테이블에서 해당 데이터 삭제

if ((Integer) param.get("currentSeq") == 0) {

sqlSession.delete("Filemanager.delete_authority", param);

}

Files.delete(path);

}

}

} else {

// 파일 DB 삭제

param.put("name", (String) tempMap.get("name"));

result = sqlSession.delete("Filemanager.delete_file", param);

if (result > 0) {

Files.delete(path);

}

}

}


위에 형광펜으로 칠한 부분에서 폴더가 삭제가 되야하는데 오류 메세지 없이 그냥 지나가면서 

삭제가 안됩니다... 그래놓고 톰캣 서버 종료하면 그제서야 폴더가 삭제되네요.. 

혹시 뭐라도 아시는분 계신가요

0
0
  • 답변 2

  • 으어어어어
    639
    2019-05-20 20:11:07

    하위에 파일이 있으면 안지워지는걸로 알고 있습니다

    0
  • 조만간자살함
    20
    2019-05-20 20:16:53

    if (Files.list(path).count() > 0)  부분에서 하위 파일의 존재를 파악하고 있으면 return false시켜서 삭제를 방지했구요.


    하위 파일이 없을때 삭제를 하게끔 만들었는데 진행이 안되네요...


    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.