외부 저장소에 데이터를 저장하려고합니다. 하지만 FileNotFoundException이 발생합니다.외부 저장소에 데이터 저장. FileNotFoundException
나는 온라인으로 고개를 매니페스트에 필요한 권한을 포함 'mkdirs()'나는 에뮬레이터에서 테스트하고하여 폴더를 생성 - 넥서스 6 내가 그 일을하고 어디 (23)
당신이 제안 할 수 API 잘못된.
@Override
public void saveExternalPublic(String data) {
File folder = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
File myFile = new File(folder, "myData4.txt");
folder.mkdirs();
writeData(myFile, data);
}
@Override
public void writeData(File myFile, String data) {
FileOutputStream fileOutputStream = null;
try {
fileOutputStream = new FileOutputStream(myFile);
fileOutputStream.write(data.getBytes());
cacheSaveView.showMessage(data + " was written successfully "+ myFile.getAbsolutePath());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
finally {
if(null != fileOutputStream) {
try {
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
먼저 디렉토리를 생성 한 후 파일해야
11-30 00:51:43.178 23490-23490/com.example.rao.cachingsample W/System.err: java.io.FileNotFoundException: /storage/emulated/0/Download/myData4.txt: open failed: EACCES (Permission denied)
11-30 00:51:43.180 23490-23490/com.example.rao.cachingsample W/System.err: at libcore.io.IoBridge.open(IoBridge.java:452)
11-30 00:51:43.180 23490-23490/com.example.rao.cachingsample W/System.err: at java.io.FileOutputStream.<init>(FileOutputStream.java:87)
11-30 00:51:43.180 23490-23490/com.example.rao.cachingsample W/System.err: at java.io.FileOutputStream.<init>(FileOutputStream.java:72)
11-30 00:51:43.181 23490-23490/com.example.rao.cachingsample W/System.err: at com.example.rao.cachingsample.Caching.Presenter.CacheSavePresenterImpl.writeData(CacheSavePresenterImpl.java:60)
11-30 00:51:43.181 23490-23490/com.example.rao.cachingsample W/System.err: at com.example.rao.cachingsample.Caching.Presenter.CacheSavePresenterImpl.saveExternalPublic(CacheSavePresenterImpl.java:53)
11-30 00:51:43.181 23490-23490/com.example.rao.cachingsample W/System.err: at com.example.rao.cachingsample.Caching.View.FCacheSave.saveExternalPublic(FCacheSave.java:82)
11-30 00:51:43.181 23490-23490/com.example.rao.cachingsample W/System.err: at com.example.rao.cachingsample.Caching.View.FCacheSave_ViewBinding$4.doClick(FCacheSave_ViewBinding.java:63)
11-30 00:51:43.182 23490-23490/com.example.rao.cachingsample W/System.err: at butterknife.internal.DebouncingOnClickListener.onClick(DebouncingOnClickListener.java:22)
11-30 00:51:43.182 23490-23490/com.example.rao.cachingsample W/System.err: at android.view.View.performClick(View.java:5198)
11-30 00:51:43.183 23490-23490/com.example.rao.cachingsample W/System.err: at android.view.View$PerformClick.run(View.java:21147)
11-30 00:51:43.184 23490-23490/com.example.rao.cachingsample W/System.err: at android.os.Handler.handleCallback(Handler.java:739)
11-30 00:51:43.185 23490-23490/com.example.rao.cachingsample W/System.err: at android.os.Handler.dispatchMessage(Handler.java:95)
11-30 00:51:43.185 23490-23490/com.example.rao.cachingsample W/System.err: at android.os.Looper.loop(Looper.java:148)
11-30 00:51:43.185 23490-23490/com.example.rao.cachingsample W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5417)
11-30 00:51:43.192 23490-23490/com.example.rao.cachingsample W/System.err: at java.lang.reflect.Method.invoke(Native Method)
11-30 00:51:43.193 23490-23490/com.example.rao.cachingsample W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
11-30 00:51:43.198 23490-23490/com.example.rao.cachingsample W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
11-30 00:51:43.199 23490-23490/com.example.rao.cachingsample W/System.err: Caused by: android.system.ErrnoException: open failed: EACCES (Permission denied)
11-30 00:51:43.211 23490-23490/com.example.rao.cachingsample W/System.err: at libcore.io.Posix.open(Native Method)
11-30 00:51:43.215 23490-23490/com.example.rao.cachingsample W/System.err: at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
11-30 00:51:43.216 23490-23490/com.example.rao.cachingsample W/System.err: at libcore.io.IoBridge.open(IoBridge.java:438)
더 많은 (https://developer.android.com/training/permissions/requesting.html)를 * * – Prem
당신이 매니페스트에서 귀하의 허가를 선언 한 곳은 어디입니까? – Umair
[런타임에 권한 부여를 확인하는 방법]의 가능한 복제본 (https://stackoverflow.com/questions/30549561/how-to-check-grants-permissions-at-run-time) – Prem