我正在访问插入Android的USB闪存驱动器上的大文件。由于文件很大,我需要在文件内部“寻找”而不是加载整个文件。Java随机访问文件输入流
在C语言中,seek只是一行代码,但要在android上完成,似乎需要一些史诗编码。
我在互联网上看到了这个类,它允许你在流中寻找,但它需要传递一个“文件对象”给它的构造函数。
眼下的代码,我访问USB驱动器上的文件有:
InputStream in=getContentResolver().openInputStream(uri);
或
ParcelFileDescriptor pfd= getContentResolver().openFileDescriptor(uri,"rw");
但我如何从一开始一个文件对象ContentResolver,所以我可以把它传递给RandomAccessFileInputStream类(在上面的链接处)
您好,感谢您的帮助,是的,我可以将文件放置在外部USB驱动器的固定位置(根目录)。据我了解,如果我把文件放在usb的固定位置,我将如何找到该文件(ex挂载点等)我将使用哪个api来获取它的位置,并打开文件以查找? – programmer3
@dreadlocks:“是的,我可以将文件放置在外部USB驱动器上的固定位置(根目录)” - 您无法通过文件系统直接访问USB驱动器的根目录。您必须将该文件放置在** Android **告诉您您的应用有权访问的位置。这可能因设备和设备用户而异。通过插入驱动器,在Context中调用'getExternalFilesDirs()',并查看第二个(和后续)位置是什么,您可以找到该设备和用户的位置。这是为应用程序将自己的东西写入该位置而设计的,然后在稍后阅读,而不是针对您的场景。 – CommonsWare