如何在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时所看到的(注意缺失的文档文件夹):
这是写入文件的目录(使用上面的实现):
我的实现有什么问题?
我的实现有什么问题?
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); }