【问题标题】:Files not visible in windows explorer when saved on ASUS transformer SD Card保存在华硕变压器 SD 卡上时,文件在 Windows 资源管理器中不可见
【发布时间】:2011-12-17 14:00:47
【问题描述】:

如果我在 ASUS Transformer 上运行以下代码,则会按预期在“sd 卡”目录的顶层创建“testfile.txt”。

private void testWriteFile () throws IOException
{
    File sdCard = Environment.getExternalStorageDirectory();
    File file = new File(sdCard, "testfile.txt");

    FileOutputStream myOutput = new FileOutputStream(file);
    byte buffer[] = {'0','1','2','3','4','5','6','7','8','9'};      

    myOutput.write(buffer,0,buffer.length);

    myOutput.flush();
    myOutput.close();
}

我可以使用文件管理器应用程序查看 ASUS Transformer 上的文件。我可以通过“adb shell”命令从 Windows DOS 框中看到该文件,并且它的权限似乎设置正确。但是,如果我从 Windows 资源管理器中查看目录,则不存在“testfile.txt”。我已经设置了显示隐藏文件和系统文件的选项,但没有成功。

如果我使用 ASUS 文件管理器应用程序更改“testfile.txt”的名称,则它会在 Windows 资源管理器中可见,因此其他应用程序能够使文件在资源管理器中可见。

如果我在 ZTE Blade(Orange San Francisco)上运行相同的代码,那么我可以在 Windows 资源管理器中看到“testfile.txt”,而无需更改其名称。

我还需要做些什么来完成此文件以使其可见吗?

这里报告了类似的问题,Can't see a file in Windows written by an android app on sd-card unless I "Force Close" the app,但在我的情况下强制关闭不会使文件可见。

【问题讨论】:

    标签: android windows-7 android-sdcard


    【解决方案1】:

    我已经通过以下说明解决了这个问题:

        MediaScannerConnection.scanFile
                 (this, new String[] {file.toString()}, null, null);
    

    我不知道为什么华硕需要这个而不是中兴 Blade。但是,它们连接到我的 PC 的方式有所不同,我怀疑这就是原因。

    ZTE Blade 显示为 USB 大容量存储设备,并分配有驱动器号。 Asus 显示为便携式媒体播放器 (MTP),未分配驱动器号。

    【讨论】:

    • 您在哪里放置 MediaScannerConnection 调用?关闭文件后?
    • 我在 write() 之后和 flush() 和 close() 之前放置了 MediaScannerConnection 调用
    • 它也对我有用!!谢谢!!好像和pc的连接有关……
    【解决方案2】:

    我在 android5.x 上工作过:

    File sdcard = Environment.getExternalStorageDirectory();
    //step 1.
    sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, 
                  Uri.parse("file://" + sdcard)));
    
    //step 2.
    MediaScannerConnection.scanFile(getApplicationContext(), 
            new String[]{sdcard.getAbsolutePath() 
            + "/screenshots/myscreen_" + IMAGES_PRODUCED + ".png"}, null, null);
    

    谢谢。

    【讨论】:

      猜你喜欢
      • 2011-10-16
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      • 2011-11-15
      • 2020-03-17
      • 1970-01-01
      • 1970-01-01
      • 2012-05-26
      相关资源
      最近更新 更多