2017-10-14 11 views
0

앱이있어서 텍스트 파일을 만들고 그 안에 뭔가를 쓰고 싶습니다. 나는 폴더를 선택하고 파일을 만들 명시 적 의도를 사용하여 어디 onActivityResult를이문자열을 .txt 파일에 쓰고 FileOutputStream이 예상대로 작동하지 않습니다.

if (requestCode == WRITE_REQUEST_CODE && resultCode == Activity.RESULT_OK) { 
     Uri uri = resultData.getData(); 
     String path = uri.getPath(); 
     File file = new File(path); 
     String filename = file.getName(); 
     try { 
      verifyStoragePermissions(this); //method to access storage 
      FileOutputStream outputStream = openFileOutput(filename,MODE_PRIVATE); 
      outputStream.write("Message to write".getBytes()); 
      outputStream.flush(); 
      outputStream.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

나는 또한

내 매니페스트에 permitions을 쓰기 위해 사용하는 파일을 만든 후

private void createFile(String mimeType, String fileName) { 
    Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT); 
    intent.addCategory(Intent.CATEGORY_OPENABLE); 
    intent.setType(mimeType); 
    intent.putExtra(Intent.EXTRA_TITLE, fileName); 
    startActivityForResult(intent, WRITE_REQUEST_CODE); 
} 

일반 mimeType를 = 텍스트/

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

오류가 발생하지 않지만 파일에 아무 것도 기록되어 있지 않습니다. 누구든지 도와 줄 수 있습니까?

답변

1
  1. ACTION_CREATE_DOCUMENT는 콘텐츠를 쓰기 위해 사용하는 당신에게 Uri을 제공합니다. Uri은 (는)이 아닙니다.

  2. openFileOutput()

    내부 스토리지, 외부하지 저장하고, 그래서 권한은 무의미하다

  3. openFileOutput()getBytes()

를 통해 ACTION_CREATE_DOCUMENT

  • 작성하지 마십시오 문자열을 함께 할 수 없다

    전술적으로 두 번째 코드 블록을 다음으로 대체하십시오.

    if (requestCode == WRITE_REQUEST_CODE && resultCode == Activity.RESULT_OK) { 
        Uri uri = resultData.getData(); 
    
        try { 
         OutputStream os=getContentResolver().openOutputStream(uri); 
         PrintStream ps=new PrintStream(os); 
         ps.print("Message to write"); 
         ps.flush(); 
         ps.close(); 
        } catch (Exception e) { 
         Log.e("Some identifying string", "Exception writing to "+uri.toString(), e); 
        } 
    } 
    
  • +0

    .xml 파일로 저장하려면 무엇을 변경해야합니까? 이미 mimeType을 변경했지만 작동하지 않습니다. –

    +0

    @IoannaDln : ".xml 파일로 저장"하여 무슨 뜻인지 모르겠습니다. 죄송합니다. 사용자에게 XML 파일의 위치를 ​​묻는 방법을 묻는다면 사용자가 특정 파일 확장명을 고수 할 필요는 없지만 MIME 형식의 'text/xml'이 도움이 될 것으로 기대합니다. – CommonsWare

    +0

    .txt 파일을 만드는 대신 .xml 파일을 만들려고하지만 데이터가없는 빈 파일을 얻습니다. –