从Uri创建文件和异常Occured。异常值显示为null。
try {
File mFile = new File(new URI(mediaUri.toString()));
data = readFile(mFile);
} catch (Exception e) {
Log.e("Error", e.getLocalizedMessage());
}
请帮忙
提前致谢。
答案 0 :(得分:1)
问题是从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
获取视频文件路径时,此答案是用户满意的答案 1 :(得分:0)
有些事情可能是错的。
首先,mediaUri可能为空
其次,readFile是你自己的方法(我猜它是),那么你应该发布方法或者在readFile中执行try / catch。
原因是这个。如果我要使用您的代码,那么您正在创建一个不应包含任何数据的新文件,那么您使用readFile的是什么?如果文件存在且mediaUri不为null,则null异常来自readFile方法。
答案 2 :(得分:0)
问题是,uri.toString()生成设备(文件:)和路径本身的字符串。您应该使用uri.getPath()代替。这不返回Path,而是返回String。可能有额外的/或\开始。你应该放弃它,以便它适用于所有系统。正确且与操作系统无关的行将是:
File mFile = new File(new Path(mediaUri.getPath()).toString);
在win,mac,linux上运行我们的项目。
答案 3 :(得分:-1)
您应该检查mediaURI是否已更正文件路径,我认为它没有更正文件路径。
请你解释一下???