2017-08-07 4 views
-2

これは私が作っている最初のAndroidアプリケーションです。だから、すべての用語が何であるかは少し分かりません。Android:SDカードにファイルを保存する

自分の/ raw /ディレクトリにあるファイルを自分のSDカードのルートにコピーしようとしています。

は現在、(StackOverflowのを使用し、完全に自分自身でこれを書いていない)のコードは次のようになります。

btnWriteSDFile.setOnClickListener(new View.OnClickListener() 
    { 
     public void onClick(View v) 
     { 

      try { 
       File myFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "fileName.docx"); 
       myFile.createNewFile(); 
       Toast.makeText(v.getContext(),"Wrote line", Toast.LENGTH_SHORT).show(); 
       FileOutputStream fOut = new FileOutputStream(myFile); 
       OutputStreamWriter myOutWriter =new OutputStreamWriter(fOut); 
       myOutWriter.append("testFile"); 
       myOutWriter.close(); 
       fOut.close(); 
       Toast.makeText(v.getContext(),"Done writing SD 'mysdfile.txt'", Toast.LENGTH_SHORT).show(); 
      } 
      catch (Exception e) 
      { 
       Toast.makeText(v.getContext(), e.getMessage(),Toast.LENGTH_SHORT).show(); 
      } 
     } 


    }); 

私はエラーを取得する: "失敗を開く。EACCES(アクセス許可が拒否されました)"。

私のマニフェストは、次のようになります。どのように私は私のSDカードに/raw/file.docxファイルを書き込むことができます:私はこのエラーを取得しているという事実のほかに :重複を避ける

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
     <uses-permission android:name="android.permisson.READ_EXTERNAL_STORAGE" /> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

</application> 

明確化ルート?

+1

をコピーするために働く必要があり、この

<manifest> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permisson.READ_EXTERNAL_STORAGE" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

よう<manifest>タグ

<manifest> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permisson.READ_EXTERNAL_STORAGE" /> ... <application> ... <activity> ... </activity> </application> </manifest> 

に内側と即時の使用権限を追加する必要があります間違った場所で ' 'を持つことに加えて(perあなたはまた、[実行時の許可](https://stackoverflow.com/questions/32635704/android-permission-doesnt-work-even-if-i-have-declared-it)を考慮に入れる必要があります。 – CommonsWare

+1

Androidの「例外が開かれなかった:EACCES(許可が拒否されました)」の可能な複製(https://stackoverflow.com/questions/8854359/exception-open-failed-eacces-permission-denied-on-android) –

+0

ありがとう、私もそれを含める!私は思っていますが、私は/raw/file.docxをSDカードに書き込むにはどうすればいいですか? –

答えて

2

this文書によると、あなたはこれがでファイル

InputStream in = getResources().openRawResource(R.raw.fileNameYourGoingToCopy); 
String path = Environment.getExternalStorageDirectory() + "/anyFolder" + File.separator + fileNameWithExtension; 
FileOutputStream out = new FileOutputStream(path); 
byte[] buff = new byte[1024]; 
int read = 0; 
try { 
    while ((read = in.read(buff)) > 0) { 
     out.write(buff, 0, read); 
    } 
} finally { 
    in.close(); 
    out.close(); 
} 
+0

ありがとう!これにより、場所のエラーは削除されますが、ディレクトリに/raw/file.docxを書き込むにはどうすればよいですか? –

+0

@clanc私は編集しました。それが動作するかどうかを確認します。この答えの複製です。 https://stackoverflow.com/a/19465224/5202960 –

+0

魅力のように働き、助けてくれてありがとう! –

関連する問題