내 작은 유틸리티 응용 프로그램은 GUI 파일 선택기를 통해 사용자에게 출력 디렉토리를 요청합니다. 그런 다음 처리 후이 출력 디렉토리에 많은 파일을 작성합니다.내 파일을 만들기 전에 디렉토리에 쓰기 액세스 확인
나는 응용 프로그램은 사용자에게 알립니다 있도록 쓰기 액세스 권한을 가지고 있으며, 은 (시간이 오래 걸릴 수 있음) 처리를 계속하지 않을 경우 확인해야
내 첫 번째 시도였다 CanWrite라고() 메소드 java.io.File. 그러나 이것은 에서 작동하지 않으므로 디렉토리 항목 자체 만 다루고 내용은 다루지 않습니다. 적어도 이름이 바뀌거나 삭제할 수있는 Windows XP 폴더의 인스턴스 하나만 볼 수 있지만 사용 권한 때문에 파일을 만들 수 없습니다. 이것은 실제로 내 테스트 케이스입니다.
나는 마침내 그냥 작업이 성공하면 실제로 파일 및 검사를 만들려고하기 때문에이 나에게 우아한 느낌을하지 않는 다음과 같은 솔루션
//User places the input file in a directory and selects it from the GUI
//All output files will be created in the directory that contains the input file
File fileBrowse = chooser.getSelectedFile(); //chooser is a JFileChooser
File sample = new File(fileBrowse.getParent(),"empty.txt");
try
{
/*
* Create and delete a dummy file in order to check file permissions. Maybe
* there is a safer way for this check.
*/
sample.createNewFile();
sample.delete();
}
catch(IOException e)
{
//Error message shown to user. Operation is aborted
}
에 정착했다.
여기에 더 좋은 방법이 있어야한다고 생각하지만, 지금까지 발견 한 모든 해결책은 보안 관리자와 함께 Java 애플릿 및 독립형 응용 프로그램과 관련이 있습니다. 내가 빠진 것이 있습니까?
실제로 파일을 기록하기 전에 디렉토리 내의 파일 액세스를 확인하는 권장 방법은 무엇입니까? 내가
"empty.txt"가 이미 존재한다면? 그런 다음 중요한 파일 일 수 있습니다. –
예, createNewFile()에 의해 반환 된 부울을 사용하여 파일이 실제로 생성되지 않았는지 확인하는 것이 가장 좋습니다. – kazanaki