0

我已经编写了下面的代码,但我不断收到有关路径分隔符的错误。

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 文件并添加记录的方法,它可以工作,但是这个不行。

4

1 回答 1

3

context.openFileOutput:Direct from 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 failed

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

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

于 2013-09-17T15:51:35.877 回答