繁体   English   中英

从Uri创建文件发生异常

[英]Create file from Uri exception occurs

从Uri创建文件时发生异常。 exception的值显示为null。

try {
File mFile = new File(new URI(mediaUri.toString()));
data = readFile(mFile);     
 } catch (Exception e) {
Log.e("Error", e.getLocalizedMessage());
}   

请帮忙

提前致谢。

问题是从uri创建文件时

文件mFile =新文件(新URI(mediaUri.toString()));

mediaUri.toString()并未从中返回视频文件的正确路径以获取视频文件的正确路径

File mFile = new File(new URI(getRealPathFromURI(contentUri));


     public String getRealPathFromURI(Uri contentUri) {

    String[] proj = { MediaStore.Video.Media.DATA };
    Cursor cursor = managedQuery(contentUri, proj, null, null, null);
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}

从给定的Uri提取视频文件路径时,此答案是userfull

问题在于,uri.toString()生成设备字符串(文件:)和路径本身。 您应该改用uri.getPath()。 返回的不是Path,而是String。 开始时可能带有额外的/或\\。 您应该放开它,以便它在所有系统上都可以使用。 正确且独立于操作系统的行将是:

File mFile = new File(new Path(mediaUri.getPath()).toString);

在Win,Mac,Linux上可以在我们的项目上工作。

有几件事可能是错误的。

首先,mediaUri可以为null

其次,readFile是您自己的方法(我想是),那么您应该发布该方法或在readFile中进行尝试/捕获。
原因是这样的。 如果要按您的代码进行操作,您正在创建一个不应包含任何数据的新文件,那么将readFile用于什么呢? 如果文件存在,并且mediaUri不为null,则null异常来自您的readFile方法。

您应该检查mediaURI是否已更正文件路径,我想它不是已更正文件路径。

您能再解释一下吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM