Android上的文件修改检查

时间:2016-06-10 04:28:35

标签: android android-studio

我编写了一个循环,用于检查两个文件的文件修改日期。 就Toast文本而言,这是成功的。 但是我似乎无法计算实际比较日期的语法,比较Date1> Date2实际上被android studio拒绝了。

关于如何获得最新修改日期的大量建议是关于Stack Overflow,而不是关于如何制作必要的if语句的答案。

任何帮助都将非常感激。 (是的,我已阅读文档!这个主题的用法示例很差)

Handler mHandler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // Email sync loop (maybe change for watcher method)
    new Thread(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    try {
                        Thread.sleep(10000);
                        mHandler.post(new Runnable() {

                            @Override
                            public void run() {
                                Toast.makeText(MainActivity.this, "Loop", Toast.LENGTH_SHORT).show();
                                File file = new File(String.valueOf(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS + "/Database1.db")));
                                if (file.exists()) {
                                    Date lastModified = new Date(file.lastModified());
                                    String modified = lastModified.toString();
                                    Toast.makeText(MainActivity.this, modified, Toast.LENGTH_LONG).show();
                                }
                                File file2 = new File(String.valueOf(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS + "/Database2.db")));
                                if (file2.exists()) {
                                    Date lastModified2 = new Date(file2.lastModified());
                                    String modified2 = lastModified2.toString();
                                    Toast.makeText(MainActivity.this, modified2, Toast.LENGTH_LONG).show();
                                }
                            }
                        });
                    } catch (Exception e) {
                        // TODO: handle exception
                    }
                }
            }
        }).start();
}

2 个答案:

答案 0 :(得分:0)

您不需要单独的线程,循环和sleep()调用,您只需使用Handler方法安排对postDelayed()实例的检查。它将在主线程上执行,这对您来说非常好,并且不会阻止应用程序。作为Runnable实例的最后一步,您可以再次安排它,因此它将循环运行。

如果要停止它,请在处理程序上调用removeCallbacksAndMessages(null)

我不确定你想用它做什么,但也许不是做一个轮询循环你可以使用FileObserver类来监视文件更改,here是一个如何使用它的例子

答案 1 :(得分:0)

为了比较两个日期,您始终可以比较它们的毫秒值。

例如date1.getTime()> date2.getTime()

getTime()方法以毫秒为单位返回时间,它是一个可以轻松比较的长值。