创建文件时不会向其写入数据

时间:2012-09-15 10:46:55

标签: android file-io outputstream

我尝试使用下面显示的代码创建一个文本文件并将数据写入其中:

JAVA CODE_1:

File dir = Environment.getExternalStorageDirectory();
    File file = new File(dir,"/DCIM/"+fileTitle);

    try {           
        if( file.exists() ){
        FileOutputStream fos = openFileOutput(fileTitle, MODE_WORLD_READABLE);
        OutputStreamWriter osw = new OutputStreamWriter(fos);
        osw.write("this is a text");
        osw.flush();
        osw.close();
        } else {
            file.createNewFile();
            FileOutputStream fos = openFileOutput(fileTitle, MODE_WORLD_READABLE);
            OutputStreamWriter osw = new OutputStreamWriter(fos);
            osw.write("this is a text");
            osw.flush();
            osw.close();
        }

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

但是当我检查DCIM目录时,我发现文件已创建但没有数据写入它。请告诉我我的错误在哪里。

2 个答案:

答案 0 :(得分:1)

抱歉,它不是在外部存储上创建的,而是在应用程序的内部存储上创建的, (检查您的文件是否在/data/data/<Application_Package_Name>/files目录中创建)

由于,

您正在使用openFileOutput哪个人在应用程序的内部存储中创建文件。

public abstract FileOutputStream openFileOutput (String name, int mode)

自:API Level 1

打开与此Context的应用程序包关联的私有文件以进行编写。如果文件尚不存在,则创建该文件。

<强>代码:

file.createNewFile();
FileOutputStream fos = new FileOutputStream(file, true);
OutputStreamWriter osw = new OutputStreamWriter(fos);
osw.write("this is a text");
osw.flush();
osw.close();

答案 1 :(得分:0)

仅限使用

        FileOutputStream fos = openFileOutput(fileTitle, MODE_WORLD_READABLE);
        OutputStreamWriter osw = new OutputStreamWriter(fos);
        osw.write("this is a text");
        osw.flush();
        osw.close();

它将在内部存储中创建文件。

或使用

        File dir = Environment.getExternalStorageDirectory();
        File file = new File(dir,"/DCIM/"+fileTitle);
        FileOutputStream fos = new FileOutputStream(file);
        OutputStreamWriter osw = new OutputStreamWriter(fos);
        osw.write("this is a text");
        osw.flush();
        osw.close();