我是靠谱客的博主 幽默犀牛,最近开发中收集的这篇文章主要介绍android下根据路径不同拷贝文件至指定路径,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

包含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下根据路径不同拷贝文件至指定路径所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部