Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用android获取RealmObject中上次修改的RealmObject或字段_Android_File_Realm - Fatal编程技术网

如何使用android获取RealmObject中上次修改的RealmObject或字段

如何使用android获取RealmObject中上次修改的RealmObject或字段,android,file,realm,Android,File,Realm,我的应用程序运行如下: 从url下载zip文件 提取下载的文件,获取csv文件和文件夹 音频 将csv文件保存到域 删除zip文件、fle解压缩、csv文件,只保留文件夹 音频 显示来自领域的数据 这里的问题是,当我从服务器更新数据时,我想通过比较url中最后修改的文件和设备中的文件来更新域中的数据,但我删除了zip文件、解压缩文件、csv文件,只留下文件夹音频和mp3文件。 当我得到最后一个修改过的mp3文件时,它只获取我上次在服务器上更新的日期,而不是我在设备上提取的日期。它应该始终小于

我的应用程序运行如下:

  • 从url下载zip文件

  • 提取下载的文件,获取csv文件和文件夹 音频

  • 将csv文件保存到域

  • 删除zip文件、fle解压缩、csv文件,只保留文件夹 音频

  • 显示来自领域的数据

这里的问题是,当我从服务器更新数据时,我想通过比较url中最后修改的文件和设备中的文件来更新域中的数据,但我删除了zip文件、解压缩文件、csv文件,只留下文件夹音频和mp3文件。 当我得到最后一个修改过的mp3文件时,它只获取我上次在服务器上更新的日期,而不是我在设备上提取的日期。它应该始终小于或等于服务器上的更新文件

代码示例 函数提取文件zip

private void extractZipe() {
  publishProgress(-1);
    try {
        ZipFile file = new ZipFile(zipFile);
        if (file.isEncrypted()) {
            file.setPassword("abcde12345-");
        }
        file.extractAll(zipFile.getParent());
        zipFile.delete();
        File csv = new File(context.getFilesDir(), "Data.csv");
        DataManager.getInstance().readTestQuestion(context, name, csv);
        csv.delete();
    } catch (ZipException e) {
        e.printStackTrace();
    }
}


//Realm data
public void readTestQuestion(Context context, String name, File file) {
    Realm realm = RealmManager.getDefault(context);
    Test test = Test.findByName(realm, name);
    String dateUpdate = new Date().toString();
    try {
        CSVReader reader = openCsvFromFile(file);
        List<Question> questions = readQuestion(realm, reader, test.getName());
        realm.beginTransaction();
        test.getQuestions().addAll(questions);
        realm.commitTransaction();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
代码检查设备中上次修改的文件

// Get LastModified file mp3 from device

File file = new File(holder.getContext().getFilesDir() + "/Data/Audio/", test.getQuestions().get(0).getAudio() + ".mp3");
long dt = file.lastModified();
if (dt == 0)
    Log.d("carot", "click: No date information.");
else
    Log.d("carot", "click: " + new Date(dt) + "::" + dt);
领域对象

//Realm Object Test with fields lastUpdated, created ..Always null because I did not process them before

public class Test extends RealmObject{
@PrimaryKey
    @Required
    private String id;
    private String name;
    private int duration;
    private int number_of_questions;
    private int display_order;
    private int progress;
    private String path;
    private boolean is_deleted;
    private String lastUpdated;
    private String created;
    private RealmList<Question> questions;
}

\\Question RealmObject 
public class Question extends RealmObject{
@PrimaryKey
    @Required
    private String id;
    @Index
    private String audio;
    @Index
    private String photo;
    private String text;
    @Index
    private String transcript;
    private String typeName;
    private int display_order;
}
//域对象测试,字段lastUpdated,created..始终为空,因为我以前没有处理它们
公共类测试扩展了RealmObject{
@主键
@必需的
私有字符串id;
私有字符串名称;
私有整数持续时间;
问题的私有整数;
私人整数显示顺序;
私人投资进展;
私有字符串路径;
删除私有布尔值;
私有字符串更新;
创建私有字符串;
私人地产问题;
}
\\问题现实对象
公共类问题扩展RealmObject{
@主键
@必需的
私有字符串id;
@索引
私有字符串音频;
@索引
私人字符串照片;
私有字符串文本;
@索引
私有字符串转录本;
私有字符串类型名;
私人整数显示顺序;
}
(领域版本:1.2.0)

1。)添加一个无参数构造函数,该构造函数将
lastModified
日期设置为
new date()


2.)将您的架构版本增加到当前版本的
+1
,并定义一个迁移,将
lastModified
的值设置为
new Date()
其中
lastModified
当前为
null

Stackoverflow不是提交错误报告/问题/功能请求的地方。@H.B.这不是真正的错误报告/问题/功能请求,更像是“我该怎么做X”H.B.\n我只是在寻找问题的解决方案,抱歉打扰您。EpicPandaForce_uu感谢您帮助我,您帮助我从github到stackoverflow,祝您愉快you@EpicPandaForce:是的,但问题模板只是简单地复制和粘贴。在stackoverflow上,事情应该是问题,并相应地进行组织。这样看起来好像有人迷路了,结果也走错了地方。谢谢,当你的建议有效时,我会打绿色勾,再次谢谢你
//Realm Object Test with fields lastUpdated, created ..Always null because I did not process them before

public class Test extends RealmObject{
@PrimaryKey
    @Required
    private String id;
    private String name;
    private int duration;
    private int number_of_questions;
    private int display_order;
    private int progress;
    private String path;
    private boolean is_deleted;
    private String lastUpdated;
    private String created;
    private RealmList<Question> questions;
}

\\Question RealmObject 
public class Question extends RealmObject{
@PrimaryKey
    @Required
    private String id;
    @Index
    private String audio;
    @Index
    private String photo;
    private String text;
    @Index
    private String transcript;
    private String typeName;
    private int display_order;
}