在Android应用中,碰到一个问题,在代码中执行创建或者删除某个文件后,在系统的文件管理器中能够相应地看到文件的变化,但是插在电脑上查看的时候,却看不到改文件的变化。同时,当创建文件后,在系统中的某些程序却读不到;而删除文件后,某些程序却仍然能够读到。本文是对该问题的一个解决办法
在Android应用中,碰到一个问题,在代码中执行创建或者删除某个文件后,在系统的文件管理器中能够相应地看到文件的变化,但是插在电脑上查看的时候,却看不到改文件的变化。同时,当创建文件后,在系统中的某些程序却读不到;而删除文件后,某些程序却仍然能够读到。
对于这个问题,我费了不少时间,后来找到了原因,和大家分享一下。
关键就在如下的notifySystemToScan()方法,其实就是通知系统创建或者删除了某个文件,系统需要扫描sd卡,进行更新。这样,就解决了上述描述的问题。
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
File file = new File(filePath + "a.txt");
if (file.exists()) {
file.delete();
} else {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
notifySystemToScan(filePath + "a.txt");
});
public static void notifySystemToScan(String filePath) {
mLogUtils.info("filePth=" + filePath);
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
File file = new File(filePath);
Uri uri = Uri.fromFile(file);
intent.setData(uri);
MyApplication.getApplication().sendBroadcast(intent);
}