4

このメソッドを使用して内部ストレージに書き込む方法を見てきました..

public void storeSerializedObject(MyObject theObject) {



        FileOutputStream fileOut = null;
        String fileName = theObject.getName();
        try {


            fileOut = context.getApplicationContext().openFileOutput(
                    fileName + ".ser", Context.MODE_PRIVATE);
            ObjectOutputStream out = new ObjectOutputStream(fileOut);
            out.writeObject(theObject);
            out.close();
            fileOut.close();

        } catch (IOException i) {
            i.printStackTrace();
        }

    }

問題は、オブジェクトを新しい指定されたディレクトリに配置したいということです。次に、最終的にそのディレクトリですべての .ser ファイルを検索し、各オブジェクトを逆シリアル化します。
では、基本的には、どのようにそれを行うのでしょうか?

また、ファイルの保存に上記のアプローチを使用して、そのコンテンツ内のすべてのファイル名のリストについて、デフォルトの名前のない場所を確認する方法はありますか?

4

1 に答える 1

0

Contextには、内部ファイルとディレクトリを取得する方法がいくつかありますContext#getDir()

getDir("serfiles", Context.MODE_PRIVATE)という名前のディレクトリになるはずです
/data/data/your.package.name/app_serfiles

そこにあるファイルを一覧表示するには、File#list()またはを使用しますFile#listFiles()。特定のファイルだけが必要な場合は、それをフィルターと組み合わせます

private static File[] listSerFiles(Context context, String dirName) {
    File dir = context.getDir(dirName, Context.MODE_PRIVATE);
    return dir.listFiles(SER_FILTER);
}
private static final FileFilter SER_FILTER = new FileFilter() {
    public boolean accept(File file) {
        return file.isFile() && file.getName().endsWith(".ser");
    }
};

そして、次のように出力ストリームを開くことができます

private static FileOutputStream getOutputStreamInDir(Context context, String dirName, String fileName) throws FileNotFoundException {
    File dir = context.getDir(dirName, Context.MODE_PRIVATE);
    File file = new File(dir, fileName);
    return new FileOutputStream(file);
}
于 2012-12-08T17:20:29.133 に答える