본문 바로가기

Android/에러

안드로이드/Android java.io.FileNotFoundException (Permission denied) 에러

안드로이드/Android java.io.FileNotFoundException (Permission denied) 에러 



안드로이드 프로젝트를 진행하면서 아래의 에러를 접하게 되는 경우가 있습니다.

 

 /sdcard/.install/.tmp/testfile (Permission denied)

 java.io.FileNotFoundException: /sdcard/.install/.tmp/testfile (Permission denied)


지금 상황은 sdcard 에 파일을 쓸 수 없게 되는 상황에서 억지로 new FileOutputStream(file) 을 사용해서 sdcard에 작업을 하는 경우에 발생 하게 됩니다. 이러한 문제가 일어나는 일반적인 상황에 대해 알아보고 그에 따른 해결책에 대해서 알아 보겠습니다.



1. 퍼미션을 안주었을 경우.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

sdcard에 파일을 쓰기위에서는 해당 퍼미션을 추가해 주어야 합니다. 그렇지 않으면 (Permission denied) 가 발생하게 됩니다. sdcard에 파일 작업을 위해서는 위의 퍼미션을 AndroidManifest.xml 에 추가한 후 작업 하셔야 합니다.


2. USB 저장소를 사용하고 있는 경우.

USB 저장소를 사용하고 있는 경우에는 sdcard에 작업을 할 수 가 없습니다. USB 저장소를 사용한다는 자체가 sdcard에 Lock을 걸어 놓고 작업을 진행하는 경우이기 때문에, new FileOutputStream(file) 자체를 허용하지 않는 듯 합니다. 그렇기 때문에 USB 저장소는 해제 하시고 사용하시면 문제없이 sdcard에 입력 작업이 가능 합니다.