1

在我的 android 应用程序中,我尝试在 sdcard 上创建一个 xml 文件。我试过这个:

public class XmlFileCreator extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);


        System.out.println(Environment.getExternalStorageDirectory());
        // create a new file called "new.xml" in the SD card
        File newxmlfile = new File( Environment.getExternalStorageDirectory(),"new.xml");
        try {
            newxmlfile.createNewFile();
        } catch (IOException e) {
            Log.e("IOException", "exception in createNewFile() method");
        }

        FileOutputStream fileos = null;
        try {
            fileos = new FileOutputStream(newxmlfile);
        } catch (FileNotFoundException e) {
            Log.e("FileNotFoundException", "can't create FileOutputStream");
        }
        // we create a XmlSerializer in order to write xml data
        XmlSerializer serializer = Xml.newSerializer();

        try {
            // we set the FileOutputStream as output for the serializer, using
            // UTF-8 encoding
            serializer.setOutput(fileos, "UTF-8");
            // Write <?xml declaration with encoding (if encoding not null) and
            // standalone flag (if standalone not null)
            serializer.startDocument(null, Boolean.valueOf(true));
            // set indentation option
            serializer.setFeature(
                    "http://xmlpull.org/v1/doc/features.html#indent-output",
                    true);
            // start a tag called "root"
            serializer.startTag(null, "root");
            // i indent code just to have a view similar to xml-tree
            serializer.startTag(null, "child1");
            serializer.endTag(null, "child1");
            serializer.startTag(null, "child2");
            // set an attribute called "attribute" with a "value" for <child2>
            serializer.attribute(null, "attribute", "value");
            serializer.endTag(null, "child2");

            serializer.startTag(null, "child3");
            // write some text inside <child3>
            serializer.text("some text inside child3");
            serializer.endTag(null, "child3");

            serializer.endTag(null, "root");
            serializer.endDocument();
            // write xml data into the FileOutputStream
            serializer.flush();
            // finally we close the file stream
            fileos.close();

            System.out.println("file has been created on SD card");         
        }
        catch(Exception e){
            Log.e("Exception","error occurred while creating xml file");
        }
    }
}

但在 LogCat 我得到这个:

08-23 11:19:56.776: ERROR/IOException(6333): exception in createNewFile() method
08-23 11:19:56.776: ERROR/FileNotFoundException(6333): can't create FileOutputStream
08-23 11:19:56.776: ERROR/Exception(6333): error occurred while creating xml file

哪里有问题?为什么 createNewFile() 会抛出 IOException?需要帮助,请...

4

2 回答 2

5
File newxmlfile = new File( Environment.getExternalStorageDirectory()+"/new.xml");

清单许可

< uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> 
于 2011-08-23T08:27:54.850 回答
2

一旦检查你提到的manifast文件是否允许写入外部存储

于 2011-08-23T08:24:53.650 回答