如何在Android中将文件写入外部公共存储,以便从Windows中可见?

我的应用程序应该将文件保存到某个地方,当您将手机/平板电脑连接到计算机时,可以通过系统文件资源pipe理器查看这些文件。

这是我实现文件写作的方式:

protected String mDir = Environment.DIRECTORY_DOCUMENTS; protected File mPath = Environment.getExternalStoragePublicDirectory(mDir); protected void writeLogFile(String filename) { File f = new File(mPath, filename + ".txt"); f.getParentFile().mkdirs(); try (BufferedWriter bw = new BufferedWriter(new FileWriter(f, false))) { // Details omitted. } catch (Exception e) { e.printStackTrace(); return; } makeText("Wrote " + f.getAbsolutePath()); } 

这是我将索尼Xperia Z4平板电脑连接到Windows时所看到的(注意缺失的文档文件夹):

显示平板电脑内容的Windows文件浏览

这是写入文件的目录(使用上面的实现):

显示文件系统的Android设备监视器

我的实现有什么问题?

我的实现有什么问题?

MediaStore尚未发现您新创build的文件。 您在Windows中以及在许多设备上的“图库”应用中看到的内容是基于MediaStore编制索引的。

将数据写入磁盘后,使用MediaScannerConnection及其scanFile()方法告诉MediaStore有关文件的信息:

 public void scanFile(Context ctxt, File f, String mimeType) { MediaScannerConnection .scanFile(ctxt, new String[] {f.getAbsolutePath()}, new String[] {mimeType}, null); }