2011-03-03 106 views
10

夥計們,我有一個問題,當我們在android中編寫xml時,我的代碼給出了一個異常作爲權限被拒絕。任何人都可以知道它將如何被移除。如何在android中創建xml文件

package com.ex.createXml; 

import android.app.Activity; 
import android.os.Bundle; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import org.xmlpull.v1.XmlSerializer; 
import android.os.Environment; 
import android.util.Log; 
import android.util.Xml; 
import android.widget.TextView; 


public class createXml extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     File newxmlfile = new File("/data/new.xml"); 
     try{ 
      newxmlfile.createNewFile(); 
     }catch(IOException e) 
     { 
      Log.e("IOException", "Exception in create new File("); 
     } 
     FileOutputStream fileos = null; 
     try{ 
      fileos = new FileOutputStream(newxmlfile); 

     }catch(FileNotFoundException e) 
     { 
      Log.e("FileNotFoundException",e.toString()); 
     } 
     XmlSerializer serializer = Xml.newSerializer(); 
     try{ 
     serializer.setOutput(fileos, "UTF-8"); 
     serializer.startDocument(null, Boolean.valueOf(true)); 
     serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true); 
     serializer.startTag(null, "root"); 
     serializer.startTag(null, "Child1"); 
     serializer.endTag(null, "Child1"); 
     serializer.startTag(null, "Child2"); 
     serializer.attribute(null, "attribute", "value"); 
     serializer.endTag(null, "Child2"); 
     serializer.startTag(null, "Child3"); 
     serializer.text("Some text inside child 3"); 
     serializer.endTag(null,"Child3"); 
     serializer.endTag(null,"root"); 
     serializer.endDocument(); 
     serializer.flush(); 
     fileos.close(); 
     //TextView tv = (TextView)findViewById(R.); 

     }catch(Exception e) 
     { 
      Log.e("Exception","Exception occured in wroting"); 
     } 
    } 
} 
+5

請不要再次提出同樣的問題。 – Will 2011-03-03 14:44:44

回答

14

試試這個來創建或讀取android中的文件。 working with files

,並創建/讀取XML文件嘗試Working with XML

如果您需要與XML相關的任何示範項目,比讓我知道,我會盡力給你

+0

如何修改Android上已經存在的XML文件? – 2016-08-30 18:09:14

0

好像你想在C的位置創建一個文件:/這不是android系統上的有效路徑標識符。 Android來自Linux環境。

http://developer.android.com/guide/topics/data/data-storage.html以下鏈接瞭解更多關於Android的

數據存儲如果你想在你的本地PC,你首先需要在Android設備上創建它,然後從設備拉(或者創建一個文件模擬器或你的真實手機)

5
File newxmlfile = new File("C:/new.xml"); 

您正試圖在驅動器C上創建您的文件.Android是基於Linux的系統,因此沒有驅動器。存儲設備可以安裝到根(「/」)或任何其他文件夾。

對於您的應用程序/data/<pakcage-name>文件夾可用。試着寫在那裏。此外,您還可以嘗試寫入外部存儲設備,但你的progrma需要一個允許這樣做:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

這應該您的清單文件中被提及。

瞭解更多here

+0

感謝弗拉基米爾,你是真的,它給予權限拒絕例外。所以,你能告訴它如何去除。 – 2011-03-03 13:23:28

+0

查看更新後的答案。 – 2011-03-03 14:46:11

0

由於你不能寫/data/new.xml Android的安全模型。這就是嘗試正確的根文件系統,這就是爲什麼你被拒絕權限。嘗試沒有主導斜線。

FileOutputStream fos = openFileOutput("new.xml", MODE_PRIVATE); 
fos.write(...); 

這應該把它相對於你的應用程序。

+0

它給出了一個錯誤只讀文件系統 – 2011-03-03 13:44:20

+0

但它存儲文件的位置? – 2011-03-03 13:57:19

+0

@SanatPandey這個存儲文件在哪裏?你找到答案了嗎?我不知道文件在哪裏創建? – Atihska 2014-01-29 17:44:52

0

您可以使用此:

File xmlDir = new File(Environment.getExternalStorageDirectory().getPath() + "/data/new.xml");