0

Android で新しいファイルを作成したい:

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

しかし、file.createNewFile() は常に false を返します。私が間違っていることは何ですか?

4

4 に答える 4

0

を使用するContext.openFileInput(filename)と、ファイルの作成が処理されると思います。

于 2012-04-12T05:13:07.863 に答える
0

Android File docから:

このファイルに格納されているパス情報に従って、ファイル システム上に新しい空のファイルを作成します。このメソッドは、ファイルを作成する場合は true を返し、ファイルが既に存在する場合は false を返します。ファイルがファイルではない場合でも false を返すことに注意してください (たとえば、ディレクトリであるため)。

FileOutputStream Context.openFileOutput(String,int)メソッドを呼び出す必要があります。

FileOutputStream out=openFileOutput("file.txt",MODE_PRIVATE);
于 2012-04-12T05:16:27.053 に答える
0

"filename"空でないディレクトリの場合file.delete()、ディレクトリは消去されないため、この論理的な問題が発生します。

于 2012-04-12T05:16:35.310 に答える
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;
}
于 2012-04-12T05:29:39.777 に答える