2012-04-12 15 views
0

ich eine neue Datei im Android erstellen möchten:Android CreateNewFile false zurück

File file = new File(getFilesDir(), "filename"); 
if (file.exists()) 
    file.delete(); 
file.createNewFile(); 

Aber die file.createNewFile() immer false zurück. Was mache ich falsch?

+0

Verwenden Sie 'try {file.createNewFile();} catch (IOException e) {}' –

Antwort

0

Wenn "filename" ein nicht-leeres Verzeichnis ist, file.delete() wird das Verzeichnis für Sie nicht löschen, damit dieses logische Problem.

0

Ich glaube, wenn Sie Context.openFileInput(filename) verwenden würden, würde es Dateierstellung für Sie behandeln.

0

Vom Android File doc:

Erstellt eine neue, leere Datei auf dem Dateisystem gemäß dem Informationspfad in dieser Datei gespeichert. Diese Methode gibt true zurück, wenn sie eine Datei erstellt, false, wenn die Datei bereits existiert. Beachten Sie, dass false zurückgibt, auch wenn die Datei keine Datei ist (z. B. ein Verzeichnis ).

Sie müssen die FileOutputStream Context.openFileOutput(String,int) Methode aufrufen.

FileOutputStream out=openFileOutput("file.txt",MODE_PRIVATE); 
0
public static File getOutputMediaFile(int type) { 
    // To be safe, you should check that the SDCard is mounted 
    // using Environment.getExternalStorageState() before doing this. 

    File mediaStorageDir = new File(
      Environment 
        .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), 
      "MyCameraApp"); 
    // This location works best if you want the created images to be shared 
    // between applications and persist after your app has been uninstalled. 

    // Create the storage directory if it does not exist 
    if (!mediaStorageDir.exists()) { 
     if (!mediaStorageDir.mkdirs()) { 
      Log.d("MyCameraApp", "failed to create directory"); 
      return null; 
     } 
    } 

    // Create a media file name 
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss") 
      .format(new Date()); 
    File mediaFile; 
    if (type == MEDIA_TYPE_IMAGE) { 
     mediaFile = new File(mediaStorageDir.getPath() + File.separator 
       + "IMG_" + timeStamp + ".jpg"); 
    } else if (type == MEDIA_TYPE_VIDEO) { 
     mediaFile = new File(mediaStorageDir.getPath() + File.separator 
       + "VID_" + timeStamp + ".mp4"); 
    } else { 
     return null; 
    } 

    return mediaFile; 
}