【发布时间】:2011-11-15 06:22:24
【问题描述】:
我有一个包含一些数据的存储文件。我想检测它是否已被修改,然后在必要时解决问题。
我想过控制文件中的行数,但我卡住了。
此外,没有方法可以执行此操作:http://developer.android.com/reference/java/io/File.html。
有什么想法吗?
【问题讨论】:
标签: android file-io data-integrity
我有一个包含一些数据的存储文件。我想检测它是否已被修改,然后在必要时解决问题。
我想过控制文件中的行数,但我卡住了。
此外,没有方法可以执行此操作:http://developer.android.com/reference/java/io/File.html。
有什么想法吗?
【问题讨论】:
标签: android file-io data-integrity
您可以尝试使用 md5 文件检查来检查文件的校验和。
Java md5 校验和: Getting a File's MD5 Checksum in Java
或者试试这个 http://www.rgagnon.com/javadetails/java-0490.html
我觉得还有比这更好的方法
【讨论】:
使用 File 的 lastModified 方法跟踪文件上次修改的时间戳
http://developer.android.com/reference/java/io/File.html#lastModified()
【讨论】:
使用 MD5 校验和是一种非常密集的方法,但是如果您比较文件中“修改日期”数据的时间戳,您应该能够有效地找到已修改的文件。
这应该可以帮助您开始
File file = new File(absolute_file_location);
if (file.exists())
{
Date lastModified = new Date(file.lastModified());
}
【讨论】:
lastModified变量被修改时进行一些处理,我该如何编码?
看看FileObserver类documentation.
【讨论】:
另一种方法是使用 Java 的 WatchService 监视文件的更改。
https://docs.oracle.com/javase/tutorial/essential/io/notification.html
不过,我不确定它在 Android 中的效果如何。
【讨论】: