gpt4 book ai didi

android - 将对象写入 android 中的内部存储(在新目录中)

转载 作者:太空宇宙 更新时间:2023-11-03 11:17:55 24 4
gpt4 key购买 nike

我已经看到了如何使用这种方法写入内部存储..

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 文件,并反序列化每个对象。
那么基本上,您会怎么做?

此外,使用上述文件存储方法,有没有办法检查默认未命名位置以获取其内容中所有文件名的列表?

最佳答案

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);
}

关于android - 将对象写入 android 中的内部存储(在新目录中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13778946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com