2016-10-04 3 views
0

Ich bin nicht in der Lage, herauszufinden, was falsch beim Erstellen neuer Datei ist, habe ich unten Code getestet und es funktioniert gut, aber im aktuellen Projekt kann ich keine neue Datei erstellen.Ausnahme beim Erstellen neuer Datei

Datei erstellen:

public static File createFile() { 
    final String SDCARD = Environment.getExternalStorageDirectory().getPath(); 
    final String TEMP_FOLDER = SDCARD + File.separator + "AVL1" + File.separator + "temp"; 
    final String name = "myfile3.png"; 
    final File directory = new File(TEMP_FOLDER); 
    File tst = null; 
    try { 
     tst = new File(TEMP_FOLDER, name); 
     if (tst.exists()) 
      return tst; 

     if (directory.exists()) { 
      Log.i("fdbg", "directory exists"); 
      tst.createNewFile(); 
     } else { 
      Log.i("fdbg", "directory not exists"); 
      directory.mkdirs(); 
      tst.createNewFile(); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return tst; 
} 

Ausnahme:

10-04 16:21:02.995 9533-9533/app.name W/System.err: java.io.IOException: open failed: EACCES (Permission denied) 
10-04 16:21:02.995 9533-9533/app.name W/System.err:  at java.io.File.createNewFile(File.java:941) 
10-04 16:21:02.995 9533-9533/app.name W/System.err:  at app.name.Views.Activities.MainActivity.createTempFile(MainActivity.java:290) 
10-04 16:21:02.995 9533-9533/app.name W/System.err:  at app.name.Views.Activities.MainActivity.onCreate(MainActivity.java:149) 
10-04 16:21:02.995 9533-9533/app.name W/System.err:  at android.app.Activity.performCreate(Activity.java:6221) 
10-04 16:21:02.995 9533-9533/app.name W/System.err:  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) 
10-04 16:21:02.995 9533-9533/app.name W/System.err:  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2611) 
10-04 16:21:02.995 9533-9533/app.name W/System.err:  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2723) 
10-04 16:21:02.995 9533-9533/app.name W/System.err:  at android.app.ActivityThread.access$900(ActivityThread.java:172) 
10-04 16:21:02.995 9533-9533/app.name W/System.err:  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1422) 
10-04 16:21:02.995 9533-9533/app.name W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:102) 
10-04 16:21:02.995 9533-9533/app.name W/System.err:  at android.os.Looper.loop(Looper.java:145) 
10-04 16:21:02.995 9533-9533/app.name W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:5832) 
10-04 16:21:02.995 9533-9533/app.name W/System.err:  at java.lang.reflect.Method.invoke(Native Method) 
10-04 16:21:02.995 9533-9533/app.name W/System.err:  at java.lang.reflect.Method.invoke(Method.java:372) 
10-04 16:21:02.995 9533-9533/app.name W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
10-04 16:21:02.995 9533-9533/app.name W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 
10-04 16:21:02.995 9533-9533/app.name W/System.err: Caused by: android.system.ErrnoException: open failed: EACCES (Permission denied) 
10-04 16:21:02.995 9533-9533/app.name W/System.err:  at libcore.io.Posix.open(Native Method) 
10-04 16:21:02.995 9533-9533/app.name W/System.err:  at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186) 
10-04 16:21:02.995 9533-9533/app.name W/System.err:  at java.io.File.createNewFile(File.java:934) 
10-04 16:21:02.995 9533-9533/app.name W/System.err:  ... 15 more 

App build.gradle

apply plugin: 'com.android.application' 
apply plugin: 'android-apt' 

android { 
    compileSdkVersion 24 
    buildToolsVersion "24.0.2" 

    defaultConfig { 
     applicationId "package.name" 
     minSdkVersion 19 
     targetSdkVersion 21 
     versionCode 1 
     versionName "1.0" 
     renderscriptTargetApi 21 
     renderscriptSupportModeEnabled true 
     multiDexEnabled true 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

repositories { 
    //some repos 
} 

dependencies { 
    //project dependencies 
} 
apply plugin: 'com.google.gms.google-services' 

Manifest Berechtigungen

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


<application 
     /> 

Geräte API = 21

+0

'myFile.mkdirs(); myFile.createNewFile(); '. Sie können diese Datei nicht erstellen, da ein Verzeichnis mit diesem Namen bereits existiert. Entferne die mkdirs(). Und entfernen Sie das Verzeichnis, bevor Sie es erneut versuchen. – greenapps

+0

kein Glück, ich kann Datei mit createNewFile() erstellen; aber im aktuellen Projekt funktioniert es nicht mehr – H4SN

+0

Sie haben dieses Verzeichnis nicht entfernt. – greenapps

Antwort

0

ich, was Sie testen diese auf Android 6.0, Wenn ja, dann müssen Sie diese Berechtigungen einige Code hinzufügen, für die Gewährung von

+0

Ich bin mir dessen bewusst, ich habe erwähnt, dass ich auf api 21 Lollipop testen – H4SN

+0

Dies ist keine Antwort. Sie müssen spezifisch sein – Chisko

Verwandte Themen