在USB大容量存储模式(通过电话)连接时,有时在PC上看不到SD卡数据

可能重复:
SD卡的内容存在,但不能看到他们

电话运行Linux内核(2.6.31)插入SD卡。

[数据写入SD卡时(写入系统调用)写入成功返回。 但是,当卡(通过电话)作为PC上的大容量存储设备访问时,数据不可见。

只有在物理移除卡并重新插入卡后,然后在PC上作为大容量存储设备访问它时,才会显示已写入的数据。 写入数据后尝试fsync()。 它仍然不会显示。

在将数据写入SD卡之前,内核是否保持caching? 如果是这样,我如何确保它被刷新到SD卡?

您的问题是存在SD卡内容的确切副本, 但不能看到它们 – PC正在显示从MTP接口返回的内容。

存根代码做你需要使文件出现:

进口:

import android.media.MediaScannerConnection; import android.os.Environment; import android.util.Log; import java.io.File; 

存根代码:

 File f = new File(Environment.getExternalStorageDirectory().getPath() + "/hello_nurse.txt"); if (! f.exists()) { try { f.createNewFile(); String[] files = new String[1]; files[0] = Environment.getExternalStorageDirectory().getPath() + "/hello_nurse.txt"; String[] mimes = new String[1]; mimes[0] = "text/plain"; MediaScannerConnection.scanFile(getApplicationContext(), files, mimes, null); } catch (Exception ex) { Log.e("SD Create", "Failed to create file", ex); return; } } else { Log.e("SD Create", "File is already present"); }