2016-06-29 9 views
0

私は2つのボタン、1番目のボタンを使ってsdcardにxmlファイルを作成します。
とこのxmlを読むための2番目のボタン。
これは私のコードです:このコードでアンドロイドはsdcardからxmlを作成して読み込みます

String xml_root; 
ListView lv_emp; 
static final String KEY_NAME = "name"; 
static final String KEY_AGE = "age"; 
List<HashMap<String, String>> empHashmap; 
List<ClassEmp> empList = null; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_empacc); 

    xml_root = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + "\n" + 
      "<employees>" + "\n" + 
      "\t" + "<emp>" + "\n" + 
      "\t" + "\t" + "<name>" + "jame" + "</name>" + "\n" + 
      "\t" + "\t" + "<age>" + "17" + "</age>" + "\n" + 
      "\t" + "</emp>" + "\n" + 
      "\t" + "<emp>" + "\n" + 
      "\t" + "\t" + "<name>" + "natalie" + "</name>" + "\n" + 
      "\t" + "\t" + "<age>" + "20" + "</age>" + "\n" + 
      "\t" + "</emp>" + "\n" + 
      "</employees>"; 

    Button bt_create2 = (Button)findViewById(R.id.bt_createfileT2); 
    bt_create2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      try { 
       File newFolder = new File(Environment.getExternalStorageDirectory(), "TestFolder"); 
       if (!newFolder.exists()) { 
        newFolder.mkdir(); 
       } 

       File file = new File(newFolder, "Test" + ".xml"); 
       if (!file.exists()) { 
        file.createNewFile(); 
        FileOutputStream fOut = new FileOutputStream(file); 
        OutputStreamWriter myOutWriter =new OutputStreamWriter(fOut); 
        myOutWriter.append(xml_root); 
        myOutWriter.close(); 
        fOut.close(); 
       } 
      } catch (Exception e) { 
       System.out.println("e: " + e); 
      } 
     } 
    }); 

    Button bt_read2 = (Button)findViewById(R.id.bt_readfileT2); 
    bt_read2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      try { 
       lv_emp = (ListView)findViewById(R.id.lv_Emp); 
       File file = new File(Environment.getExternalStorageDirectory() + "TestFolder/Test.xml"); 
       InputStream is = new FileInputStream(file.getPath()); 
       XmlPullParserEmp parser_Emp = new XmlPullParserEmp(); 
       empList = parser_Emp.parse(is); 
       BinderDataEmp bd_Emp = new BinderDataEmp(Empacc.this, empHashmap); 
       lv_emp.setAdapter(bd_Emp); 
      } 
      catch (Exception e){ 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

、それはSDカード上のTestFolderでTest.xmlを作成しました。
私はそれを読むことができません。
どのように修正するのですか?

+0

ファイルを読みながら、あなたが取得しているエラーを共有してください。 –

+0

java.io.FileNotFoundException:/mnt/sdcardTestFolder/Test.xml:オープンに失敗しました:java.ioのlibcore.io.IoBridge.open(IoBridge.java:416)のENOENT(そのようなファイルまたはディレクトリはありません) .FileInputStream。 abcd1234

+0

エラーで、sdcardとTestFolderの間に '/'がないことがはっきりと分かります。 –

答えて

0

あなたはおそらく、ファイルを読み込む

中に/(スラッシュ)が欠落している、これを使用して再試行してください:

File file = new File(Environment.getExternalStorageDirectory() + "/TestFolder/Test.xml"); 
+0

それは動作しません。 – abcd1234

+0

エラーが表示されます。org.xmlpull.v1.XmlPullParserException:コメントには - (position:COMMENT、@ 3:13 in [email protected])、org.kxml2.io.KXmlParser.readComment(KXmlParser。 java:564) – abcd1234

+0

私のアンドロイドスタジオで実行されている同じ行のコードです。あなたのXmlPullParserEmp parser_Emp = new XmlPullParserEmp();および許可された許可を確認してください。クラスに問題がある可能性があります。 –

関連する問題