2016-04-01 20 views
0

私は外部ストレージにフォルダを作成しようとしています。私のアプリのディレクトリにフォルダを作成することはできましたが、私はcanWrite()と呼ぶときにfalseを得る。私はマニフェストのWRITE_EXTERNAL_PERMISSIONを宣言した。ここでは外部ストレージにフォルダを作成できません

は私のアプリのディレクトリ

File file1=new File(context.getFilesDir(), "//test1"); 
file1.mkdir(); 
System.out.println(file1.canWrite()); 

とExternalStorageのためのための私のコードは、それぞれのフォルダが作成される最初のケースで

File file2=new File(Environment.getExternalStorageDirectory(), "//test2"); 
file2.mkdir(); 
System.out.println(file2.canWrite()); 

であり、私はprintln.On上の第2のフォルダを1つの真取得します作成されず、printlnでfalseになります。

+1

私は重複するスラッシュを取り除くことから始めます。それを超えて、あなたは 'WRITE_EXTERNAL_STORAGE'パーミッションを取得することに問題があるようです(https://commonsware.com/blog/2015/08/31/hey-where-mid-permission-go.html)。 – CommonsWare

+0

「[アンドロイドの外部ストレージにフォルダを作成できません]」の複製があります(http://stackoverflow.com/questions/22366217/cant-create-folder-on-external-storage-on-android) –

+0

@CommonsWareそれは非常に参考になった。問題は私がバージョン23をターゲットにしていたことだった。私は決してそれを見つけられなかっただろう! – tasgr86

答えて

0

許可の下には私、あなたのmanifest.xml アンドロイドを追加:あなたはカンマを使用する場合の名前= "android.permission.WRITE_EXTERNAL_STORAGE"

  String PATH = Environment.getExternalStorageDirectory() + "/download/YourPath"; 
      String fileName="Name for your File";   

      File file = new File(PATH); 
      file.mkdirs(); 

      File outputFile = new File(file, fileName); 
      FileOutputStream fos = new FileOutputStream(outputFile); 

      InputStream is = c.getInputStream(); 

      byte[] buffer = new byte[1024]; 
      int len1 = 0; 
      while ((len1 = is.read(buffer)) != -1) 
      { 

       fos.write(buffer, 0, len1); 
      } 
      fos.close(); 
      is.close(); 
0

これは、ディレクトリが作成されますが、それは "// TEST2" を意味しますファイル名になる

+0

私はあなたのポイントを得るが、問題は私がgetExternalStorageDirectory、ファイルまたはディレクトリを呼び出すとき何も書けなかったことだった。 – tasgr86

+0

FileOutputStream fileOutputStream = new FileOutputStream(file2); fileOutputStream.write(あなたのデータ); fileOutputStream.flush(); fileOutputStream.close(); – Karthik

関連する問題