1. 程式人生 > >安卓使用StringBuffer和FileOutputStream生成xml文件

安卓使用StringBuffer和FileOutputStream生成xml文件

該程式是在安卓中點選生成xml按鈕,在sdcard生成一個名為smsbackup的xml文件
在這裡插入圖片描述
佈局就不多說了,先在存放java的資料夾中新建一個Sms類用來宣告變數
在這裡插入圖片描述
Sms程式碼如下:

package com.example.createxmlv1;

public class Sms {
    private String address;
    private String body;
    private String date;

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }
}

然後在主介面類中初始化我們要備份的資料,之後修改點選按鈕的方法,通過StringBuffer的方式生成一個xml檔案。
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
建立StringBuffer物件,開始拼接xml的檔案頭,根節點sms節點,address節點,body節點,date節點,然後獲取sdcard檔案的路徑,再使用輸出流將內容寫入生成的xml檔案。

主介面完整程式碼如下:

package com.example.createxmlv1;

import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    List<Sms> smsList;
    Button btn1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //[1]初始化我們要備份的資料
        smsList=new ArrayList<Sms>();

        for (int i=0;i<10;i++){
            Sms sms=new Sms();
            sms.setAddress("10008"+i);
            sms.setBody("nihao"+i);
            sms.setDate("201"+i);

            //[2]把sms物件加入到集合中
            smsList.add(sms);

        }
    }

    //點選按鈕通過 stringBuffer的方式生成一個xml的檔案
    public void click(View view) {
        //[1]建立sb物件
        StringBuffer sb=new StringBuffer();

        //[2]開始組拼xml檔案頭
        sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");

        //[3]開始組拼xml的根節點
        sb.append("<smss>");
        //[4]開始組拼sms節點
        for (Sms sms:smsList){
            sb.append("<sms>");

            //[5]開始組拼address節點
            sb.append("<address>");
            sb.append(sms.getAddress());
            sb.append("</address>");

            //[6]開始組拼body節點
            sb.append("<body>");
            sb.append(sms.getBody());
            sb.append("</body>");


            //[7]開始組拼date節點
            sb.append("<date>");
            sb.append(sms.getDate());
            sb.append("</date>");

            sb.append("</sms>");
        }

        sb.append("</smss>");


        //[8]把資料儲存到sd卡中
        try {
            File file=new File(Environment.getExternalStorageDirectory().getPath(),"smsbackup.xml");
            FileOutputStream fos=new FileOutputStream(file);
            fos.write(sb.toString().getBytes());
            fos.close();//關閉流

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}