我有像
这样的对象的ArrayListArrayList<DataCCHeading>CC1=new ArrayList<DataCCHeading>();
ArrayList<DataCCHeading>hd=new ArrayList<DataCCHeading>(result);
for (DataCCHeading dataCCHeading : hd)
{
if(dataCCHeading.Ownername==TAG_CC1HeadingData)
{
CC1.add(dataCCHeading);
}
}
我想要存储外部存储SDCard以便以后我可以从服务器再次请求它获取该数据。我的问题是如何存储对象的Arraylist来存储和从SDCard中检索?
答案 0 :(得分:1)
您有几个选择:
Java序列化:只需让您的类实现Serializable,并编写相应的序列化和反序列化逻辑,然后您可以将它们写入文件并将其读回。请参阅本教程:http://www.tutorialspoint.com/java/java_serialization.htm
JSON序列化:使用库列表GSON,您可以将对象序列化为JSON数组作为文本文件,将其保存到文件中。然后将其作为JSON字符串读回,并再次使用GSON库将其转换回对象的arraylist。
使用内置SQLiteDatabase:将对象存储为sqlite数据库中的数据行。类成员将作为列存储在表中。要将它们转换回数组,只需从表中检索所有行,逐个构建对象并将它们添加到arraylist中。
答案 1 :(得分:0)
您可能希望先将其序列化(例如:使用JYaml)。
然后你可以轻松地进行序列化,并且它非常节省空间。
答案 2 :(得分:-1)
你这样做:
//use getExternalStorageState to determine if there is an sd card
if (Environment.getExternalStorageState() == null) {
directory = new File(Environment.getDataDirectory()
+ "/RobotiumTestLog/");
photoDirectory = new File(Environment.getDataDirectory()
+ "/Robotium-Screenshots/");
/*
* this checks to see if there are any previous test photo files
* if there are any photos, they are deleted for the sake of
* memory
*/
//if the directory exists, delete files in directory
if (photoDirectory.exists()) {
File[] dirFiles = photoDirectory.listFiles();
if (dirFiles.length != 0) {
for (int ii = 0; ii <= dirFiles.length; ii++) {
dirFiles[ii].delete();
}
}
}
// if no directory exists, create new directory
if (!directory.exists()) {
directory.mkdir();
}
// if phone DOES have sd card
} else if (Environment.getExternalStorageState() != null) {
// search for directory on SD card
directory = new File(Environment.getExternalStorageDirectory()
+ "/RobotiumTestLog/");
photoDirectory = new File(
Environment.getExternalStorageDirectory()
+ "/Robotium-Screenshots/");
if (photoDirectory.exists()) {
File[] dirFiles = photoDirectory.listFiles();
if (dirFiles.length > 0) {
for (int ii = 0; ii < dirFiles.length; ii++) {
dirFiles[ii].delete();
}
dirFiles = null;
}
}
// if no directory exists, create new directory to store test
// results
if (!directory.exists()) {
directory.mkdir();
}
}
这是一个非常简单的过程。我在这里做的是检查是否有SD卡,如果有,我搜索一个目录,如果没有目录,我创建一个。如果有一个目录,它有内容我擦除它。你不必完成所有这些。如果您愿意,可以使用Environment.getExternalStorageDirectory()
。这将获得SD卡。从那里你创建一个bufferedWriter
并写。您还需要在清单中添加<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
。如果您有任何疑问,请告诉我。
我希望这有帮助!