对于作业,我们需要能够保存自定义文件类型,然后才能再次读取它。我想我可以使用FileInputStream类,这样我就可以轻松地使用myInStream.read()从文件中获取所需的所有信息。但是,我遇到了将文件放入FileInputStream的问题。我能够获取URI,但似乎我用来获取URI的方法使得URI类型与File类不兼容。在我开始阅读之前,我在onActivityResult()中有以下代码:
Uri pickedFile = data.getData();
File myFile = new File(pickedFile);
FileInputStream inStream = new FileInputStream(myFile);
在第二行它说“无法解析构造函数'文件(android.net.Uri)'”,所以我假设我必须将URI转换为不同的格式,但我不知道该如何去关于它。任何帮助将不胜感激!
编辑: 为了将来参考,固定代码如下所示: Uri pickedFile = data.getData(); InputStream inStream = getContentResolver()。openInputStream(pickedFile);
答案 0 :(得分:0)
我假设我必须将URI转换为其他格式
没有。 Uri
是某些内容的不透明句柄,例如https://stackoverflow.com/questions/42893406/putting-a-uri-into-a-fileinputstream
。它不是文件。
您没有显示Uri
的来源。我猜测,鉴于名为pickedFile
,您使用的是ACTION_GET_CONTENT
或ACTION_OPEN_DOCUMENT
。在这两种情况下,用户都不会选择文件。
如果我对Uri
来自何处的猜测是正确的,则Uri
将采用file
方案或content
方案。您可以同样的方式获得InputStream
这两种类型的Uri
:在openInputStream()
上致电ContentResolver
。您可以通过ContentResolver
调用getContentResolver()
来获得Context
,例如Activity
或Service
。
答案 1 :(得分:0)
我这样做是这样的:
FileInputStream importdb = new FileInputStream(_context.getContentResolver().openFileDescriptor(uri, "r").getFileDescriptor());