2010-11-30 15 views
1

File IOのAPIについていくつか読んで、次のブログ投稿を読んでください:http://techknock.blogspot.com/2008/05/file-hadling-in-android.html。彼のコードは、すべてが同じアクティビティにあるときにうまく動作します。しかし、私がやろうとしているのは、複数のリストを作成するために複数のデータベースを開くために使用できるIOInterfaceクラスを作成することです。AndroidファイルIOインターフェイスクラス

ListA.java

public class ListA 
{ 
    public List<ClassA> list; 
    private final String DBA = "dbA"; 
    private IOInterface database; 

    public List() 
    { 
     list = new ArrayList<ClassA>(); 
     database = new IOInterface(); 
    } 

    ... 

    public void initListA() throws IOException 
    { 
     database.openForWriting(DBA); 

     String myStr = new String("content"); 
     database.dos.writeBytes(myStr); 
     database.dos.flush(); 
     database.dos.close(); 
    } 
} 

IOInterface.java

public class IOInterface 
{ 
    public DataOutputStream dos; 
    private FileOutputStream fos; 

    public void openForWriting(String database) 
    { 
     try { 
      fos = openFileOutput(database, Content.MODE_PRIVATE); 
      dos = new DataOutputStream(fos); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

Eclipseはfos = openFileOutput(database, Content.MODE_PRIVATE);を強調しています。コメントはopenFileOutput()は存在しません。これに対する解決策はIOIntefaceクラスをアクティビティとして拡張することです。私はopenFileOutput()がアクティビティクラスのメソッドだと思います。

私の質問は、私がやろうとしていることをどのように達成するのですか?

File fp = new File("database"); 
FileOutputStream fos = new FileOutputStream(fp); 

などの標準Javaファイルioが動作しません。 FileNotFoundExceptionをキャッチします。しかしこれは実行可能でなければなりません。何か案は?

おかげで、

答えて

5

方法openFileOutput()Contextクラスに含まれているので、あなたは、ファイルを開き、あなたの方法に、このクラスのインスタンスを渡すことができます。また、ファイルを扱うときは、常にContextのメソッドを使用する必要があります。

development guideの内外のストレージの使用について読むことができます。

+0

信じられないほど...私はちょうどポストに当たっていました。あなたはまったく同じ回答を投稿しました! +1。 –

+0

あなたの投稿を中断しました。申し訳ありません。そして+1に感謝します。 – Michael

+0

私はContextクラスをインポートしています:import android.content.Context。だから、なぜ私はIOInterfaceをアクティビティとして拡張しない限り、 "openFileInput(String)型はIOInterface型のために定義されていません"とEclipseが言っているのはなぜですか?私はFileInputStream(http://developer.android.com/reference/java/io/FileInputStream.html)のAPIを読んでいて、アクティビティである必要がある参照は見られませんでした。 – linsek

関連する問題