在Android上的SDCard中打开文件

时间:2013-09-17 15:32:35

标签: android xml file-io

我已经编写了下面的代码,但是我一直收到有关Path Separator的错误。

btn_guardar.setOnClickListener(new View.OnClickListener() {


        public void onClick(View arg0) {

            final String CP7_String = et_id.getText().toString();
            final String ncontagem_String = et_ncontagem.getText().toString();



        Thread thread = new Thread () {
                public void run() {

                      String PATH=null ;


                            FileOutputStream fileos = null;
                            try{



                                    if(fileos==null)
                                {

                                    // If the file don't exists

                                    File file = new File(Environment.getExternalStorageDirectory().toString()+"/xml_nova_contagem.xml" );




                                    fileos = new FileOutputStream(file);




                                }
                                        // If the file exists


                        /////////-------- THIS METHOD WON'T WORK --------///////


                                    /*  if (fileos!=null){


                                           System.out.println("aqui vai dar bronca: " + Environment.getExternalStorageDirectory().toString());


                                    //     PATH = Environment.getExternalStorageDirectory().toString() + "/xml_nova_contagem.xml";
                                           Context context= getApplicationContext();

                                           fileos = context.openFileOutput("xml_nova_contagem.xml", Context.MODE_APPEND);

                                           System.out.println("okkkkkkkkk ");
                                            }
                                             */

                            XmlSerializer serializer = Xml.newSerializer();
                            try{

                                serializer.setOutput(fileos, "iso-8859-1");
                                serializer.startDocument(null, Boolean.valueOf(true));

                                serializer.startTag(null, "CodigoPostal");
                                serializer.startTag(null, "CP7");
                                serializer.text(CP7_String);
                                serializer.endTag(null,"CP7");
                                serializer.startTag(null,"NovaContagem");
                                serializer.text(ncontagem_String);
                                serializer.endTag(null, "NovaContagem");
                                serializer.endTag(null, "CodigoPostal");
                                serializer.endDocument();
                                serializer.flush();
                                fileos.close();

                                System.out.println("endddddddddda");


                                }catch(Exception ee)
                                {

                                    System.out.println("Exception"+ee);
                                }


                        }
                    catch (Exception e) {

                        System.out.println("Erro a escrever"+e);
                        System.out.println("path"+PATH);
                    } 



               }



                    };thread.start();



        }
    });

}

}

我需要在SDCard中打开一个文件,但我无法打开它。目的是将新记录添加到现有XML文件,但由于我无法读取它,我无法添加新记录。 我有另一种创建XML文件并添加记录的方法,它可以工作,但是这个方法不起作用。

1 个答案:

答案 0 :(得分:3)

context.openFileOutput:直接来自DOC:用于打开与此Context的应用程序包关联的私有文件以进行写入。如果文件尚不存在,则创建该文件。

这意味着您正在尝试打开不在SD卡上的文件。

要打开外接存储器或SD卡上的文件:

 File root = new File(Environment.getExternalStorageDirectory(), "Your folder");
 File gpxfile = new File(root, "xml_nova_contagem.xml");

请记住,如果您的应用正在使用SD卡,则需要管理未安装SD卡的方案等。请查看: Writing Text File to SD Card fails

如果您的xml文档作为数据库工作,或者您要在此处保存关键信息,我建议您在内部存储中创建此xml文件:

http://developer.android.com/guide/topics/data/data-storage.html