file,path,uri互相转换

本文介绍了URI到文件和路径的转换方法,包括File、Path、URI和Path之间的相互转换,详细步骤清晰易懂。

uri 转 file :File file = new File(new URI(uri.toString()));

uri 转 path: Path path = Files.get(uri);

file 转 uri: URI uri = file.toURI();

file 转 path: Path path = Paths.get(file.getPath());

path 转 uri: URI uri = path.toUri()

path 转 file: File file = new File(path.toUri());

转载于:https://www.cnblogs.com/rayallenbj/p/9340394.html

### 将视频的Uri转换File对象的方法 在Android开发中,将`Uri`转换为`File`对象是一个常见的需求。以下是实现这一功能的具体方法和代码示例。 可以通过`ContentResolver`来获取文件的实际路径,并将其封装为`File`对象。以下是一个完整的代码示例: ```java import android.content.ContentResolver; import android.content.Context; import android.net.Uri; import android.database.Cursor; import android.provider.MediaStore; import java.io.File; public class UriToFileConverter { public static File uriToFile(Uri uri, Context context) { String[] projection = { MediaStore.Video.Media.DATA }; Cursor cursor = context.getContentResolver().query(uri, projection, null, null, null); if (cursor != null && cursor.moveToFirst()) { int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA); String filePath = cursor.getString(columnIndex); cursor.close(); return new File(filePath); } else if (uri.getScheme().equals("file")) { return new File(uri.getPath()); } return null; } } ``` 上述代码通过查询`MediaStore`数据库来获取与`Uri`关联的文件路径[^4]。如果`Uri`是`content://`类型的,则需要从`MediaStore`中提取实际路径;如果是`file://`类型的,则可以直接使用`getPath()`方法获取路径[^3]。 需要注意的是,在Android 10及以上版本中,由于引入了Scoped Storage机制,直接访问文件路径可能受到限制。因此,建议优先使用`ContentResolver`来处理文件操作[^2]。 ### 注意事项 - 在Android 10及以上版本中,使用`File`对象可能会导致权限问题。推荐使用`InputStream`或`OutputStream`来读取或写入文件内容。 - 如果应用需要兼容Android 11及以上版本,可以考虑使用`MediaStore` API 或 `Intent` 来替代传统的文件路径操作[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值