2010-08-23 3 views
2

내가 자바 응용 프로그램에서 파일에 액세스 해요,하지만 예외가 이것에 대한 ..... 솔루션을 발생한 이유 메신저(액세스를 거부) 액세스 예외

 
c:\Program Files\sample\sample\cample.xml (Acc?s refus?)   
at java.io.FileOutputStream.(Unknown Source) 
at java.io.FileOutputStream. 
at java.awt.event.InvocationEvent.dispatch(Unknown Source) 
at java.awt.EventQueue.dispatchEvent(Unknown Source)  
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.run(Unknown Source) 

는 다음과 같은 예외가 어떤 생각을 어떤 몸이 점점 거부. .... 파일 사용 권한과 관련이 있습니까? 파일에 대한 읽기 권한이 없습니다.

+0

* "파일이 읽기 권한이 없다."는이'FileOutputStream'이 의미하기 때문에 * >>이 * 될 것이다 쓰기 * 권한 : 출력, 따라서, 쓰기. – Abel

답변

1

이 예외는 응용 프로그램을 실행중인 계정에 파일에 대한 쓰기 권한이 없음을 의미합니다. 쓸 파일에 필요한 권한을 부여해야합니다. 또 다른 옵션은 필요한 권한이있는 다른 폴더에 파일을 저장하는 것입니다.

+0

또는 파일을 만들려면 디렉토리로 이동하십시오. "sample.xml"이 아닌 "cample.xml"을 원하십니까? – Thilo

+0

사용자가이 위치에 파일을 만든 경우이 파일을 프로그램에서 temp, % APPDATA %와 같은 다른 위치로 옮기는 것이 맞습니다. – raji

+0

@raji : 사용자는'Accès Refusé '를 받기 때문에 그 위치에 파일을 생성 할 수 없습니다. 그러나 오류가 발생하면 사용자에게 다른 위치를 제안 할 수 있습니다 (예 :'% APPDATA %'실제로 문제를 확인하십시오). – Abel

2

프랑스어에 대한 제한된 지식으로 "Acc? s refus?"라고 생각합니다. 시스템에서 "Accès refusé?" 또는 비슷한 것. 즉, "액세스가 거부되었습니다"라는 의미입니다. 즉, Java 프로그램은 언급 한 위치로 이동할 수 없습니다.

위치가 c:\program files 인 것을 고려하면 Windows Vista 이상에서는이 위치가 실제로 금지되어 있습니다. %APPDATA% 또는 서면 액세스 권한이있는 곳에서 위치를 선택하는 것이 좋습니다.

Windows는 보안상의 이유로 섬세한 위치에 쓰지 못하도록 시도합니다. 계정을 관리자로 변경하여 권한을 얻더라도 여전히 데이터, 설정, 파일 등을 프로그램 파일에 넣으면 안됩니다. 대신 현재 사용자 또는 기본 사용자의 응용 프로그램 데이터 디렉토리 아래에 있어야합니다. 자바에서는 get this path as follows 할 수 있습니다

// get application path 
System.getenv("APPDATA"); 
+0

"프로그램 파일"위치가 실제로 문제 일 수 있습니다. 나는 한때 "프로그램 파일"아래에 아파치 웹 서버를 설치하는 실수를 저 지르려고했다. 그 이후로 간단한 텍스트 에디터를 사용하더라도'httpd.conf '에 변경 사항을 적용하는 것은 언제나 어려움입니다. –

+0

@Andreas_D : Windows에서 아파치에 대한 두 가지 힌트 : (1) 에디터 (메모장)를 rightclick하고 * 관리자 권한으로 실행 *, (2) 'httpd.conf'의 위치를 ​​변경하십시오 (명령 줄의 레지스트리 또는 배치 파일에서 수행해야 함). 후자를 사용하여 만족 스럽습니다 (어쨌든 실행 파일 옆에 httpd.conf를 결코 좋아하지 않았습니다). – Abel

관련 문제