android - 以 USB 大容量存储模式连接时(通过手机),有时在 PC 上看不到 SD 卡数据

标签 android linux linux-kernel usb

Possible Duplicate:
SDCard content exist but cant see them

运行 Linux Kernel(2.6.31) 并插入 SD 卡的手机。

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

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

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

[编辑]删除标签 MMC

最佳答案

您的问题与 SDCard content exist but cant see them 完全相同- PC正在显示从MTP接口(interface)返回的内容。

stub 代码来执行使文件显示所需的操作:

进口:

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

stub 代码:

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");
}

关于android - 以 USB 大容量存储模式连接时(通过手机),有时在 PC 上看不到 SD 卡数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12262044/

相关文章:

c - 如何调用文件操作的读函数的正确方法?

android - 使用内核模块写入内存会导致 Android 内核出现内核 oops

android - facebook 群组提要 android

android - 从 Android 应用程序保存文件

linux - nginx 中是否有某种解压缩模块?

linux - 无法在 CentOS 上使用带有 crontab 的 centos 脚本复制文件内容

android - context.openFileInput() 尝试访问存储的文件时返回 null

android - 具有 4 个数据库版本的 SQLite onUpgrade

php - PDO:如何在 Linux 上访问 Microsoft Access 文件?

c - 刷新 Linux 内核模块中的 CPU 数据缓存