【问题标题】:fileInputStream(file) gives open failed: ENOENT (No such file or directory) errorfileInputStream(file) 给出打开失败:ENOENT(没有这样的文件或目录)错误
【发布时间】:2016-05-09 16:14:51
【问题描述】:

我正在尝试在服务器上上传视频。这就是我获取视频的方式

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.android.providers.media.documents/document/video%3A165191

我以这种方式显示视频预览

mVideoView.setVideoURI(uri);
 mVideoView.requestFocus();
 mVideoView.start();

预览播放完美。然后我需要制作一个文件将其上传到服务器。我是这样制作这个文件的

file = new File(uri.getPath());

但是当我到达下面的行时,它给出了错误

 FileInputStream fileInputStream = new FileInputStream(file);

我也试过 uri.toString();但仍然错误。我收到的错误如下:

2 错误:/document/video:165191:打开失败:ENOENT(没有这样的文件或 目录) java.io.FileNotFoundException:/document/video:165191:打开失败: ENOENT(没有这样的文件或目录)

请有人帮助我...这真的让我很沮丧..

【问题讨论】:

标签: java android video uri fileinputstream


【解决方案1】:

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

最好的办法是调用openInputStream(uri),它会返回一个InputStream。根据您对服务器上传的实现,您可以使用它直接将字节流式传输到服务器,或者将字节传递给FileOutputStream,将数据保存到文件并用于上传。

【讨论】:

    猜你喜欢
    • 2016-07-05
    • 2013-02-04
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多