0

Google에서 검색 중이며 내 질문에 대한 진정한 답변을 찾을 수 없습니다. 내 질문은 him과 동일하지만 원하는 MODE_APPEND 및 MODE_PRIVATE 내 file.how 원하는합니까?IllegalArgumentException : 파일에 경로 구분 기호가 포함되었습니다. Android

public boolean saveCustomButtonInfo (Context context, Vector<DocumentButtonInfo> info) throws Exception{ 
    String path= context.getFilesDir() + "/" + "Load"; 
    File file = new File(path); 

    if(! file.exists()){ 
     file.mkdir(); 
     //Toast.makeText(context,file.getAbsolutePath(),Toast.LENGTH_LONG).show(); 
    } 
    path=path+"/DocumentActivityCustomButtonsInfo.obj"; 
    try{ 
     FileOutputStream out=context.openFileOutput(path,Context.MODE_PRIVATE); 
     ObjectOutputStream outObject=new ObjectOutputStream(out); 
     outObject.writeObject(info); 
     outObject.flush(); 
     out.close(); 
     outObject.close(); 
     return true; 
    }catch(Exception ex){ 
     throw ex; 

    } 
} 

답변

0

당신은 openFileOutput()와 슬래시 (/)와 경로를 사용할 수 없습니다

내 코드입니다. 더 중요하게는 getFilesDir()openFileOutput()을 모두 결합하려고합니다. 불필요하며이 문제를 일으키는 것입니다. 참고로

public void saveCustomButtonInfo (Context context, List<DocumentButtonInfo> info) throws Exception { 
    File dir = new File(context.getFilesDir(), "Load"); 

    if(! dir.exists()){ 
     dir.mkdir(); 
    } 
    File f = new File(dir, "DocumentActivityCustomButtonsInfo.obj"); 
    FileOutputStream out=new FileOutputStream(f); 
    ObjectOutputStream outObject=new ObjectOutputStream(out); 
    outObject.writeObject(info); 
    outObject.flush(); 
    out.getFD().sync(); 
    outObject.close(); 
} 

:

가 코드를 변경

  • Vector 것은 십오년
  • 가 파일 시스템 경로를 구축하는 연결을 사용하지 마십시오
  • ~에 대한 폐기되었습니다; 적절한 File 생성자를 사용 단지에 대한 예외 잡기 아무 소용이 없습니다
  • 를 다시는-던져
  • 항상 모든 바이트를 확인하는 FileOutputStream에 전화 getFD().sync() true
  • 있는 boolean을 반환 아무 소용이 없습니다
  • 디스크에 기록됩니다.
+0

최상의 답변에 감사드립니다. Vector는 쓸모 없지만 ArrayList보다 쉽다는 것을 알고 있습니다. true 조작을 체크하기위한 boolean 값 – b4hr4m