概述
包含content或者file的文件路径,eg:content://media/external/audio/media/43870 或者 file://media/external/audio/media/43870,转换为实际路径,可以使用
public String getRealPath(Uri fileUrl) {
String fileName = null;
if (fileUrl != null) {
if (fileUrl.getScheme().toString().compareTo("content") == 0) // content://开头的uri
{
Cursor cursor = this.getContentResolver().query(fileUrl, null,
null, null, null);
if (cursor != null && cursor.moveToFirst()) {
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);
fileName = cursor.getString(column_index); // 取出文件路径
// if (!fileName.startsWith("/mnt")) {// 检查是否有"/mnt"前缀
// fileName = "/mnt" + fileName;
// }
cursor.close();
}
} else if (fileUrl.getScheme().compareTo("file") == 0) { // file:///开头的uri
fileName = fileUrl.toString();
fileName = fileUrl.toString().replace("file://", "");// 替换file://
// if (!fileName.startsWith("/mnt")) {// 加上"/mnt"头
// fileName += "/mnt";
// }
}
}
return fileName;
}
注释的部分为增加/mnt,需要此前缀可以增加。
根据uri拷贝文件至指定路径下,eg:eg:content://media/external/audio/media/43870,可以用如下方法:
public void copyFile(String audioDst, Uri uri) {
try {
AssetFileDescriptor audioAsset = getContentResolver()
.openAssetFileDescriptor(uri, "r");
InputStream in = audioAsset.createInputStream();
OutputStream out = new FileOutputStream(audioDst);
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
根据文件的绝对路径拷贝至指定路径,可以使用如下方法:
public void copyFile(String oldPath, String newPath) {
try {
int bytesum = 0;
int byteread = 0;
File oldfile = new File(oldPath);
if (oldfile.exists()) { //文件存在时
InputStream inStream = new FileInputStream(oldPath); //读入原文件
FileOutputStream fs = new FileOutputStream(newPath);
byte[] buffer = new byte[1024];
while ( (byteread = inStream.read(buffer)) != -1) {
bytesum += byteread; //字节数 文件大小
System.out.println(bytesum);
fs.write(buffer, 0, byteread);
}
inStream.close();
fs.close();
}
}
catch (Exception e) {
System.out.println("复制单个文件操作出错");
e.printStackTrace();
}
}
最后
以上就是幽默犀牛为你收集整理的android下根据路径不同拷贝文件至指定路径的全部内容,希望文章能够帮你解决android下根据路径不同拷贝文件至指定路径所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复