2014-11-05 2 views
0

나는 모든 스택 오버플로 질문을 읽은 후에도 계속 오류가 발생합니다. 파일을 만듭니다. 내가 현재 읽고 내부 저장 객체 세트를 작성하기위한 다음 두 가지 방법이 있습니다 입력 또는 출력 스트림을 엽니 다안드로이드 파일 시스템 : java.io.FileNotFoundException :/savedArticlesFile : 오픈 실패 : EROFS (읽기 전용 파일 시스템)

내가 try 블록에 충돌 할 때마다
public HashSet<PrestoItem> readSavedArticleFile() { 
    Log.d("snw", "readSavedArticlesFile()"); 
    String filename = "savedArticlesFile"; 
    String filePath = getActivity().getFilesDir().getPath().toString() + "/" + filename; 
    File savedArticlesFile = new File(filePath); 
    ObjectInputStream input; 
    HashSet<PrestoItem> articleSet = null; 

    // retrieve article set 
    try { 
     input = new ObjectInputStream(new FileInputStream(savedArticlesFile)); 
     articleSet = (HashSet<PrestoItem>) input.readObject(); 
     input.close(); 
    } catch (StreamCorruptedException e) { 
     e.printStackTrace(); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } 

    if (articleSet == null) { 
     articleSet = new HashSet<PrestoItem>(); 
    } 

    return articleSet; 
} 

public void saveArticleSet(HashSet<PrestoItem> articleSet) { 
    // write set back to file 
    String filename = "savedArticlesFile"; 
    String filePath = getActivity().getFilesDir().getPath().toString() + "/" + filename; 
    ObjectOutput output; 
    try { 
     output = new ObjectOutputStream(new FileOutputStream(filePath)); 
     output.writeObject(articleSet); 
     output.close(); 
    } 
    catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
    catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

, 즉 시도, 나는 ROFS의 오류가 발생합니다. 필자는 제공된 경로에서 r/w 권한을 모두 사용하도록 설정해야했지만 읽음에도 오류가 발생합니다. 나는 분명히 어딘가에서 뭔가를 오해하고있다. 모든 지침은 크게 감사하겠습니다.

편집 : 스택 추적은

11-05 15:40:09.659 26726-26726/com.gannett.dolly.CooksCorner W/System.err﹕ java.io.FileNotFoundException: /data/data/com.gannett.dolly.CooksCorner/files/savedArticlesFile: open failed: ENOENT (No such file or directory) 
11-05 15:40:09.659 26726-26726/com.gannett.dolly.CooksCorner W/System.err﹕ at libcore.io.IoBridge.open(IoBridge.java:409) 
11-05 15:40:09.659 26726-26726/com.gannett.dolly.CooksCorner W/System.err﹕ at java.io.FileInputStream.<init>(FileInputStream.java:78) 
11-05 15:40:09.669 26726-26726/com.gannett.dolly.CooksCorner W/System.err﹕ at com.gannett.dolly_android.WebAppLoaderFragment.readSavedArticleFile(WebAppLoaderFragment.java:378) 
11-05 15:40:09.669 26726-26726/com.gannett.dolly.CooksCorner W/System.err﹕ at com.gannett.dolly_android.WebAppLoaderFragment$2.shouldOverrideUrlLoading(WebAppLoaderFragment.java:225) 
11-05 15:40:09.669 26726-26726/com.gannett.dolly.CooksCorner W/System.err﹕ at com.android.webview.chromium.WebViewContentsClientAdapter.shouldOverrideUrlLoading(WebViewContentsClientAdapter.java:293) 
11-05 15:40:09.669 26726-26726/com.gannett.dolly.CooksCorner W/System.err﹕ at com.android.org.chromium.android_webview.AwContentsClientBridge.shouldOverrideUrlLoading(AwContentsClientBridge.java:96) 
11-05 15:40:09.669 26726-26726/com.gannett.dolly.CooksCorner W/System.err﹕ at com.android.org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method) 
11-05 15:40:09.669 26726-26726/com.gannett.dolly.CooksCorner W/System.err﹕ at com.android.org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:27) 
11-05 15:40:09.669 26726-26726/com.gannett.dolly.CooksCorner W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:102) 
11-05 15:40:09.669 26726-26726/com.gannett.dolly.CooksCorner W/System.err﹕ at android.os.Looper.loop(Looper.java:146) 
11-05 15:40:09.669 26726-26726/com.gannett.dolly.CooksCorner W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5487) 
11-05 15:40:09.669 26726-26726/com.gannett.dolly.CooksCorner W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method) 
11-05 15:40:09.669 26726-26726/com.gannett.dolly.CooksCorner W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:515) 
11-05 15:40:09.669 26726-26726/com.gannett.dolly.CooksCorner W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
11-05 15:40:09.669 26726-26726/com.gannett.dolly.CooksCorner W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
11-05 15:40:09.669 26726-26726/com.gannett.dolly.CooksCorner W/System.err﹕ at dalvik.system.NativeStart.main(Native Method) 
11-05 15:40:09.669 26726-26726/com.gannett.dolly.CooksCorner W/System.err﹕ Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory) 
11-05 15:40:09.669 26726-26726/com.gannett.dolly.CooksCorner W/System.err﹕ at libcore.io.Posix.open(Native Method) 
11-05 15:40:09.669 26726-26726/com.gannett.dolly.CooksCorner W/System.err﹕ at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110) 
11-05 15:40:09.669 26726-26726/com.gannett.dolly.CooksCorner W/System.err﹕ at libcore.io.IoBridge.open(IoBridge.java:393) 
11-05 15:40:09.669 26726-26726/com.gannett.dolly.CooksCorner W/System.err﹕ ... 15 more 
+0

directory.mkdirs()를 사용해보십시오 * 당신이 경로없이 자신의 파일 이름을 사용하려고 할 수 있습니다 * 다른 곳 접두사. 질문에 대한 실제 스택 추적을 편집 한 다음 이미 게시 한 것이 아닌 경우 참조 된 코드를 포함하십시오. 또한 프로젝트를 정리하고 다시 빌드하고 배포하여 실행중인 버전이 최신 소스 코드와 일치하는지 확인하십시오. –

+0

getActivity(). getFilesDir(). getAbsolutePath() + "/"+ 파일 이름을 사용해보십시오. 나는 '파일'이라는 이름으로 된 dir이 아직 존재하지 않는다고 생각한다. mkdirs()를 사용하여 필요한 경우 file.exists()를 사용하여 확인하고 작성하십시오. – greenapps

+0

@ChrisStratton 내 편집 된 질문을 참조하십시오. 스택 추적에 붙여 넣었습니다. – swilkeni

답변

0

그것과 같은 오류 메시지를 기반으로 대신 directory.mkdir()

관련 문제