插入SD卡的手机运行Linux内核(2.6.31)。
[ISSUE]当数据写入SD卡(写入系统调用)时,写入成功返回。但是,当卡(通过电话)作为PC上的大容量存储设备访问时,不会看到数据。
只有在物理移除卡并重新插入卡然后在PC上作为大容量存储设备访问卡时,才会显示已写入的数据。 在写入数据后尝试了fsync()。它仍然不会显示。
内核在将数据写入SD卡之前是否保持缓存?如果是这样,我如何确保将其刷新到SD卡?
[edit]删除了标签MMC
答案 0 :(得分:0)
您的问题与SDCard content exist but cant see them完全相同 - 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");
}