DocumentFile - 直接访问底层文件

时间:2016-01-30 20:53:54

标签: android android-sdcard documentfile

以某种方式从File获取DocumentFile对象是否可行?通过一些小技巧,我可以获得文件的真实路径,但File类不允许在那里读/写...

我需要从USB OTG或二级存储访问媒体文件,我需要以下功能:

  • 从images =>获取exif数据我真的需要它
    • 获取图片的位置
    • 获取图片的真实创建日期
    • 实际上,为了显示目的,我需要所有exif数据
  • 旋转图像的能力(这可以通过创建临时图像,删除旧图像并重命名临时图像)

关于如何实现这一点的任何想法?

1 个答案:

答案 0 :(得分:1)

  

以某种方式可以从DocumentFile获取File对象吗?

没有

  

通过一些小技巧,我可以获得文件的真实路径

不可靠。毕竟,存储访问框架不需要存在实际文件。各种DocumentProvider实现基于云服务,其中数据不会在需要时本地存储在设备上。除此之外,您使用的任何方法都取决于可能因设备而异的内部实现,更不用说Android操作系统版本了。而且,最重要的是,即使您派生路径,您仍然无法访问数据,因为您可能没有文件系统访问该位置(例如,DocumentProvider在内部存储上保存的文件)。 p>

  

从图像中获取exif数据

使用该流以及可以使用流的EXIF代码,例如this onethis one,通过在互联网上搜索android exif stream找到。

  

旋转图像的能力(这可以通过创建临时图像,删除旧图像并重命名临时图像来实现)

您无法选择制作本地副本,旋转图像,然后使用DocumentFile将图像写回原始OutputStream。是否"本地副本"只是在RAM中,或者需要是磁盘上的实际文件,取决于你计划如何旋转它。