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 回答