我想将文件从内部存储器复制或移动到SD卡。我通过存储访问框架(SAF)和DocumentFile
类...
复制是基于流的,DocumentFile
没有类似File
类的功能来设置上次修改日期。
我知道,我将文件移动/复制到SD卡,所以我知道我创建了一个本地文件。有了这些信息,是否有可能更新DocumentFile
的基础文件的最后修改日期?
您似乎无法将文件从内部存储空间移动/复制到SD卡而不会丢失上次修改日期...
阅读 - 工作
public long lastModified(DocumentFile file, Context context)
{
long lastModified = 0;
final Cursor cursor = context.getContentResolver().query(file.getUri(), null, null, null, null);
try
{
if (cursor.moveToFirst())
lastModified = cursor.getLong(cursor.getColumnIndexOrThrow(DocumentsContract.Document.COLUMN_LAST_MODIFIED));
}
finally
{
cursor.close();
}
return lastModified;
}
写作 - 不工作
public boolean setLastModified(DocumentFile file, Context context, long time)
{
ContentValues updateValues = new ContentValues();
updateValues.put(DocumentsContract.Document.COLUMN_LAST_MODIFIED, time);
int updated = context.getContentResolver().update(file.getUri(), updateValues, null, null);
return updated == 1;
}
此操作因java.lang.UnsupportedOperationException: Update not supported
例外...
答案 0 :(得分:-1)
由于API> = 26,因此可以使用刷新。这应该可以立即更新Documentfile。这对我有用:
context.getContentResolver().refresh(file.getUri(), null, null, null);