有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    您获得的数据URI不需要是文件系统上的路径——一些应用程序将其实现为路径,另一些应用程序将其作为唯一的URI,通过ContentResolver公开其数据

    最好的方法是调用^{},它返回一个InputStream。根据服务器上传的实现,您可以使用它直接将字节流传输到服务器,也可以将字节传递到FileOutputStream,将数据保存到文件并用于上传