java fileInputStream(文件)给出了open failed:ENOENT(没有这样的文件或目录)错误
我正在尝试在服务器上上传视频。这就是我获得视频的方式
intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("video/*");
startActivityForResult(intent, SELECT_VIDEO);
我通过这种方式获取文件uri
Uri uri = data.getData();
这就是我得到的
content://com.安卓.providers.media.documents/document/video%3A165191
我用这种方式显示视频预览
mVideoView.setVideoURI(uri);
mVideoView.requestFocus();
mVideoView.start();
预览播放得非常完美。然后我需要制作一个文件来上传到服务器。我是这样做的
file = new File(uri.getPath());
但当我到达下面这一行时,它给出了错误
FileInputStream fileInputStream = new FileInputStream(file);
我也试过了。toString();但仍然存在错误。我收到的错误如下:
2 error: /document/video:165191: open failed: ENOENT (No such file or directory) java.io.FileNotFoundException: /document/video:165191: open failed: ENOENT (No such file or directory)
请有人帮帮我。。。这真的让我很沮丧
# 1 楼答案
您获得的数据URI不需要是文件系统上的路径——一些应用程序将其实现为路径,另一些应用程序将其作为唯一的URI,通过
ContentResolver
公开其数据最好的方法是调用^{} ,它返回一个InputStream。根据服务器上传的实现,您可以使用它直接将字节流传输到服务器,也可以将字节传递到
FileOutputStream
,将数据保存到文件并用于上传