我已经看过如何使用这种方法写入内部存储器。
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文件,并反序列化每个对象 所以基本上,你会怎么做?
另外,使用上述文件存储方法,有没有办法检查其内容中所有文件名列表的默认未命名位置?
答案 0 :(得分: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);
}