2017-03-13 16 views
0

私はディレクトリを作成しようとしていますが、ディレクトリにファイルを保存しようとしていますが、私のプログラムはディレクトリが作成されたことを返しますが、 PC、またはESファイルエクスプローラを使用します。プログラムは、プログラムを実行するたびにtrue(ディレクトリが作成されたこと)も返します。作成した場合は、初めて初めてtrueを返します。また、ディレクトリ内にファイルを作成しようとすると、ファイルが存在しないことを返します。マニフェストでは、外部ストレージと内部ストレージの両方への書き込みに対するユーザー権限を設定しています。 私が間違っていることを助言してください、なぜ私のプログラムは実際にフォルダ(またはファイル)を作成しないのですか(テガフォルダのパスはstorage/emulated/0/Documents/Saved_Receiptsです)マイドキュメント/ Saved_Receipts)外部メモリにファイルを保存する

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

boolean success = false; 
       String root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS).toString(); 
       File myDir = new File(root + "/Saved_Receipts"); 

       if (!myDir.exists()) { 
        success = myDir.mkdir(); 
        textIncoming.append("creating folder"); 
        } 
       if (success) { 
        textIncoming.append("created folder"); 
       } else { 
        textIncoming.append("folder existed"); 
       } 

       Random generator = new Random(); 
       int n = 10000; 
       n = generator.nextInt(n); 
       String fname = "DRcpt_.xml"; 
       File file = new File (myDir, fname); 
       if (file.exists()) { 
        textIncoming.append("file exists"); 
       } 
       else{ 
        textIncoming.append("file does not exist"); 
       } 
+0

https://stackoverflow.com/a/32636039/ 115145 https://stackoverflow.com/a/32789206/115145 – CommonsWare

+0

私はSDKバージョン - API 19をコンパイルしてアプリケーションをビルドしていますが(Androidバージョン6.0.1を使用するデバイスで実行しています) – Chrish

+0

'compileSdkVersion'はこれに影響しません。 'targetSdkVersion'が行います。 – CommonsWare

答えて

0

おそらく、SDK(API)23以降を使用している可能性があります。その場合、マニフェストのパーミッションを宣言するだけでは十分ではありません。

あなたはあなたのコードに次のブロックを追加することによって、その問題を解決することができるはずです。

if (Build.VERSION.SDK_INT >= 23) { 
     if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) { 
     } 
     else { 
      ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); 
     } 
    } 

参照:

Storage permission error in Marshmallow

関連する問題