2013-04-30 90 views
0

我有我的應用程序工作。 我需要在SDCard中創建XML文件和目錄,如果它們不存在。Android,不能在SD中創建文件如果不存在

我用這個代碼從資產

獲得XML文件
public Document abrirArchivo() 
{  
    Document internalDom = null; 
    //Cargo el archivo xml en una variable Document 
    try 
    {     
    AssetManager assManager = context.getAssets(); 

    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();  
    internalDom = dBuilder.parse(assManager.open("gastos.xml")); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
     } 
    return internalDom; 
} 

然後在SD卡

這個文件保存到文件
public void crearArchivo(){ 

      String pathDirectorio=android.os.Environment.getExternalStorageDirectory().toString()+"/AdministradorGastos/"; 
      File directorio= new File(pathDirectorio); 
      File archivoExiste= new File(path); 
      directorio.mkdirs(); 
      if(!archivoExiste.exists()) 
      { 
       Document dom= abrirArchivo(); 
       try 
       { 
        Transformer transformer = TransformerFactory.newInstance().newTransformer(); 
        transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 
        StreamResult streamResult = new StreamResult(new File(pathDirectorio+"gastos.xml")); 
        DOMSource source = new DOMSource(dom); 
        transformer.transform(source, streamResult);     
       } 
       catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 

     } 

問題是我得到一個空的XML文件在資產和SD卡,而我的XML文件是這樣的:

<?xml version="1.0"?> 
<gastos> 
    <gasto> 
     <descripcion>Default</descripcion> 
     <monto>0</monto> 
     <fecha>01/01/1900</fecha> 
    </gasto> 
</gastos> 

回答

1

檢查AndroidManifest文件熱曲需要許可:

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

將此置於應用程序標籤內。我從代碼中看不到任何其他錯誤。

0

insted創建文件從資產複製文件到SD卡。檢查下面的代碼下面的權限

private void CopyAssets() { 
     AssetManager assetManager = getAssets(); 
     String[] files = null; 
     try { 
      files = assetManager.list("Files"); 
     } catch (IOException e) { 
      Log.e("tag", e.getMessage()); 
     } 

     for(String filename : files) { 
      System.out.println("File name => "+filename); 
      InputStream in = null; 
      OutputStream out = null; 
      try { 
       in = assetManager.open("Files/"+filename); // if files resides inside the "Files" directory itself 
       out = new FileOutputStream(Environment.getExternalStorageDirectory().toString() +"/" + filename); 
       copyFile(in, out); 
       in.close(); 
       in = null; 
       out.flush(); 
       out.close(); 
       out = null; 
      } catch(Exception e) { 
       Log.e("tag", e.getMessage()); 
      } 
     } 
    } 

    private void copyFile(InputStream in, OutputStream out) throws IOException { 
     byte[] buffer = new byte[1024]; 
     int read; 
     while((read = in.read(buffer)) != -1){ 
      out.write(buffer, 0, read); 
     } 
    } 

使用:

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

不是爲我工作:( – 2013-04-30 13:19:24

+0

它創建一個空文件 – 2013-04-30 13:26:02

相關問題