1

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

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 目录时,我发现文件已创建但没有数据写入其中。请告诉我我的错误在哪里。

4

2 回答 2

1

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

因为,

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

public abstract FileOutputStream openFileOutput (String name, int mode)

自:API 级别 1

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

代码:

file.createNewFile();
FileOutputStream fos = new FileOutputStream(file, true);
OutputStreamWriter osw = new OutputStreamWriter(fos);
osw.write("this is a text");
osw.flush();
osw.close();
于 2012-09-15T10:51:46.550 回答
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();
于 2012-09-15T11:13:48.877 回答