Eclipse에서 Java 프로그램을 만들었습니다. Windows XP에서 시작했지만 최근에 업그레이드되었습니다.내 프로그램이 Win7에서 만든 파일을 삭제할 수없는 이유는 무엇입니까?
저장 메커니즘의 일부로 프로그램은 설정을 파일 settings_new.sav
에 기록합니다. 문제가 해결되면 settings.sav
을 삭제하고 새 이름을 이전 이름과 일치하도록 바꿉니다. winXP에서 작동하는 동안 (적어도 생각했지만 지금은 확인할 수 없음), win7에서는 파일을 생성 한 프로그램 임에도 불구하고 파일을 삭제하지 못했습니다 (프로그램의 다른 인스턴스).
파일은 Eclipse에서 가져 와서 매우 행복하게 삭제할 수 있습니다. 수동으로 삭제할 수 있습니다. 나는 내 컴퓨터의 관리자 다. 폴더는 작업 공간 폴더 안에 있고 Program Files에는 없습니다 (최종 사용자가 거기에 설치할 것인지는 모르겠습니다). 이 프로그램은 파일을 만들고 수정할 수 있습니다. 어떤 예외도 던지지 않고있어, 만약 그것을 막는 것이 윈 블럭 7이라면 그렇게 될 것이라고 생각했다.
아이디어가 있으십니까?
사실 Windows의 파일 잠금 메커니즘입니다. 같은 코드가 Linux에서는 잘 작동 할 것입니다. 하지만 동의합니다. 파일에 대한 액세스를 명시 적으로 닫아야 모든 곳에서 올바르게 작동해야합니다. –
@ MarkRobinson : 흥미 롭습니다. 리눅스에서 스윙 어플 리케이션을 테스트해야합니다. 개발자는 JVM보다는 OS 레벨에서 문제를 예상해야합니다. – PraveenMax
Windows와 Linux의 파일 잠금 의미가 다릅니다. Linux에서는 편집을 위해 열어 놓은 파일을 삭제하지 않고도 삭제할 수 있습니다. 그런 다음 문제없이 동일한 이름의 새 파일을 만들 수 있습니다. Windows에서는 다른 프로세스에서 열려있는 파일을 삭제할 수 없습니다. 이런 상황이 발생하는 방식은 메소드/액세스 유형별로 열리는 방식에 크게 달려 있습니다. 질문이 더있는 경우 Windows 사용자를 대상으로 새로운 질문을 게시하는 것이 좋습니다. –