2013-02-25 4 views
0

나는 (프로그램 루트에있는) 특정 폴더에있는 파일을 삭제하는 프로그램을 작성 중이다. 현재 파일은 프로그램에 의해 작성된 것이 아니라 외부 적으로 작성됩니다. 그러나 나중에 프로그램 자체에서 작성하거나 편집하지 않을 수도 있습니다. 삭제 권한은 어떻게 설정합니까?

이제 문제 : 나는 파일을 삭제하려고하면

, 내가 허가 예외를 얻을. 사용자가 예를 클릭하거나 삭제를 확인하는 대화 상자에는, fileName 파일 이름 때

private void checkAndDelete(int n, String fileName) { 
    // TODO: file permission error 
    if (n == JOptionPane.YES_OPTION) { 
     File file = new File(fileName); 
     file.setWritable(true); 
     SecurityManager s = new SecurityManager(); 
     s.checkDelete(fileName); 
     System.out.println(file); 
     if(file.delete()) { 
      JOptionPane.showMessageDialog(null, "Deletion successful!"); 
      initializeNorth(); 
     } else { 
      JOptionPane.showMessageDialog(null, "Deletion failed!"); 
     } 
    } 
} 

n는 값입니다 검사, 디버깅 및 연구를 많이 후, 나는이 코드를 썼다.

이제, checkDelete 방법이 예외 :

Exception in thread "AWT-EventQueue-0" java.security.AccessControlException: access denied ("java.io.FilePermission" "DB/fun trivia.kgf" "delete") 

가 그래서 문제가 좁혀 - 권한 문제. 중요하다면, 나는 모든 프로젝트가있는 dropbox에 파일을 가지고있다. 존재하고 읽기 쉽고 쓸 수있는 파일입니다. 나는 모든 수표를했다. 이 문제는 허가를 위해서만 있습니다.

어떻게 수정합니까?

EDIT : 로컬 시스템에 파일 위치를 변경하려고했지만 오류가 있습니다. 그래서 Dropbox에서만 문제가되는 것은 아닙니다.

답변

3

필자는 Scanner 파일을 닫지 않은 것 같습니다. 난 단순히 리소스 누출을 억제했다. 내 파일 Scannertry { } finally { }에 랩핑해야했다.

1

Windows를 사용하는 경우 관리자로 소프트웨어를 실행하십시오. 프로그램을 관리자 또는 IDE (Netbeans, Eclipse)로 실행할 수 있습니다. 둘 다 작동해야합니다.

+1

나는 항상 관리자 권한으로 실행됩니다. 하지만 문제는 내가 관리자로 실행할 수는 있지만 프로그램을 사용하는 다른 사람이 그렇지 않을 수도 있다는 것입니다. –

+0

흠, 좋아! 응용 프로그램에 보안 정책이 정말로 필요합니까? SecurityManager를 제거 할 가능성이 있습니까? – Laerte

+1

디버깅을 위해'SecurityManager'를 추가했습니다. 내 프로그램이 작동하는 데 필요하지 않습니다. –

관련 문제