createNewFile () выдает ошибку - PullRequest
       8

createNewFile () выдает ошибку

1 голос
/ 23 августа 2011

В моем приложении для Android я пытаюсь создать XML-файл на SDCard.Я пробовал это:

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?Нужна помощь, пожалуйста ...

Ответы [ 2 ]

5 голосов
/ 23 августа 2011
File newxmlfile = new File( Environment.getExternalStorageDirectory()+"/new.xml");

разрешение на манифест

< uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> 
2 голосов
/ 23 августа 2011

Один раз проверьте файл манифеста, в котором вы упомянули разрешение на запись во внешнее хранилище или нет

...