2011-07-27 26 views
0

Android搭載端末のファイルへの書き込み方法と読み込み方法はわかりません。このファイルはXML形式でフォーマットされており、XMLをオブジェクトやオブジェクトにXML形式でフォーマットできるパーサーとデータ構造がすでに用意されていますが、最後のハードルは非リソースファイルからXMLを読み込むことです私はそれがリソースファイルから読み込むときに動作します)と、非リソースファイルにも書き込みます。私はデバッグするツール(スタックトレースをプリントする方法がわからない)を使うのはひどいですが、実際にはこのファイルを読み書きできないということを知っています。私はJavaでファイルに書き込む経験はありません。これは私がこれに慣れている理由かもしれません。Androidでのファイルへの書き込みとファイルからの読み取り

書き込みコード:

File scoresFile = new File(getExternalFilesDir(null), "scores.xml"); 

    if (!scoresFile.exists()) 
    { 
     scoresFile.createNewFile(); 
    } 

    OutputStream os = new FileOutputStream(scoresFile); 

    os.write(writer.toString().getBytes()); 
    os.flush(); 
    os.close(); 

読むコード:

XmlPullParserFactory xmlFac = XmlPullParserFactory.newInstance(); 
    XmlPullParser qXML = xmlFac.newPullParser(); 
    InputStream is = null; 
    File scoresFile = new File(c.getExternalFilesDir(null), "scores.xml"); 

    if (!scoresFile.exists()) 
    { 
     try { 
      scoresFile.createNewFile(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

    try { 
     is = new FileInputStream(scoresFile); 
    } catch (FileNotFoundException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 

    if (is != null) 
     qXML.setInput(is,null); 
    else 
     qXML = c.getResources().getXml(R.xml.scores); 

UPDATE:最後の読み取りセクションの句は常にfalseと評価された場合。だから、InputStreamはnullです...私の問題の根源に見えます。

+1

あなたの質問や問題は何ですか? – rds

+0

scores.xmlファイルがa)作成されていないか、b)見つからず、ハンドルを取得できません。 – jcampos8782

答えて

2

私はこれら二つのリンクを見てみましょう:Using Internal StorageUsing External Storage

同じページに両方のリンクだけ異なる部分を。実際には、このファイルをデバイスのメモリに保存するか、外部メディア(SDカードなど)に保存するかによって異なります。

  1. 内部 - サンドボックス化されているため、アプリのみがアクセスできます。
  2. 外部 - 誰でもアクセスできます。
+0

オクラホマ...誰かが私に与えた最後のリンクは違ってひどいものでした。これを読んで私の問題を解決しました。正しい方向に私を指してくれてありがとう。 – jcampos8782

関連する問題