以编程方式删除的文件仍显示在Windows资源管理器中

时间:2011-11-11 17:33:53

标签: android windows file explorer

我的应用程序轮询SD卡上的目录,查看用户通过USB连接从Windows文件浏览器中删除的新文件的外观。当出现新文件时,我的应用程序会对其进行处理,然后将其删除,但该文件仍显示在Windows文件资源管理器中。我知道该文件已经消失,因为它不再出现在DDMS文件资源管理器中,并且我的轮询器不再被触发。任何有关Android如何与Windows文件浏览器交互的见解将不胜感激。我尝试过使用MediaScannerConnectionClient,这有助于获得以编程方式创建的目录,但不会让文件消失。

我在Acer Iconia A500上运行Android 3.2。我的电脑正在运行Windows XP。这些文件是.csv和.txt文件。我正在使用File.delete()删除它们。

感谢。

3 个答案:

答案 0 :(得分:2)

这是一个老问题,但上面的答案对我来说并没有什么帮助,所以我尝试了其他一些东西,以下内容对我有用。 删除后,只需调用要删除的文件MediaScannerConnection的{​​{1}}方法:

File file = new File("...");
String absolutePathToFile = file.getAbsolutePath();
file.delete();

MediaScannerConnection.scanFile(context, new String[]{absolutePathToFile}, null, null);

我猜测扫描程序扫描文件位置,找不到文件并更新操作系统的文件索引或任何使文件可供浏览器显示的内容。

答案 1 :(得分:1)

Android是一个基于Linux的操作系统,只有当文件的最后一个文件句柄关闭时才会删除文件。但是,文件 name 可能会更早消失。

在Windows上,具有打开的文件句柄意味着文件名仍然存在。因此Windows根本不希望文件像它一样消失。

答案 2 :(得分:0)

如果刷新时文件已消失,可能只是因为Windows不希望目录从其下面更改,因此不会检查更改。