安卓使用StringBuffer和FileOutputStream生成xml文件
阿新 • • 發佈:2018-11-19
該程式是在安卓中點選生成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(); } } }