这里只是说说异步 单线程下载与文件的保存
以下载一个mp3文件并保存为例:-(void)loading
{//设置文件下载地址 NSString *urlString = [NSString stringWithFormat:@"http://zhangmenshiting2.baidu.com/data2/music/14893666/14893666.mp3?xcode=f7e142418de081ff52f81344843b869a&mid=0.73830637514858"];//这里设置的是一个mp3的下载地址NSString * encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes( kCFAllocatorDefault, (CFStringRef)urlString, NULL, NULL,  kCFStringEncodingUTF8 );NSURL *url =[NSURL URLWithString:encodedString];//创建NSURLRequest和NSURLConnection,并立即启动连接NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:5.0f];NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];if (connection) {            self.receivedData = [NSMutableData data];//初始化接收数据的缓存} else {NSLog(@"Bad Connection!");}[request release];[connection release];
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{[receivedData setLength:0];//置空数据long long mp3Size = [response expectedContentLength];//获取要下载的文件的长度NSLog(@"%lld",mp3Size);}//接收NSMutableData数据
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{[receivedData appendData:data];
}//接收完毕
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{[connection cancel];//在保存文件和播放文件之前可以做一些判断,保证程序的健壮行:例如:文件是否存在,接收的数据是否完整等处理,此处没加,使用时注意NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    NSString *documentsDirectory = [paths objectAtIndex:0];NSLog(@"mp3 path=%@",documentsDirectory);    NSString *filePath = [documentsDirectory stringByAppendingPathComponent: mp3Name];//mp3Name:你要保存的文件名称,包括文件类型。如果你知道文件类型的话,可以指定文件类型;如果事先不知道文件类型,可以在- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response中获取要下载的文件类型//在document下创建文件NSFileManager *fileManager = [NSFileManager defaultManager]; [fileManager createFileAtPath:filePath contents:nil attributes:nil];NSLog(@"mp3 path=%@",filePath);//将下载的数据,写入文件中[receivedData writeToFile:filePath atomically:YES];//播放下载下来的mp3文件[self playVoice:filePath];//如果下载的是图片则可以用下面的方法生成图片并显示 create image from data and set it to ImageView/*UIImage *image = [[UIImage alloc] initWithData:recvData];[imgView setImage:image];*/
}   简单的播放mp3文件的方法:
使用前要添加库:AudioToolbox.framework和AVFoundation.framework,
//添加头文件
#import <AVFoundation/AVFoundation.h>
#import <AudioToolbox/AudioToolbox.h>
-(void)playVoice:(NSString *)filePath
{//播放文件的路径NSURL * musicURL= [[NSURL alloc] initFileURLWithPath:filePath];  //创建音频 播放器AVAudioPlayer * voicePlayer  = [[AVAudioPlayer alloc] initWithContentsOfURL:musicURL error:nil];self.thePlayer = voicePlayer;[voicePlayer release];[musicURL release];[thePlayer setVolume:1];   //设置音量大小thePlayer.numberOfLoops = -1;//设置音乐播放次数  -1为一直循环//播放mp3,如果想要实现一些别的功能,可以看看AVAudioPlayer这个类,这里只是实现播放功能[thePlayer play];
}

文件的下载与保存,以及mp3文件的播放相关推荐

  1. 采用FFmpeg从视频中提取音频(声音)保存为mp3文件

    采用FFmpeg从视频中提取音频(声音)保存为mp3文件 作者:雨水,日期:2016年1月9日 CSDN博客:http://blog.csdn.net/gobitan 摘要:看到好的视频文件,如果想把 ...

  2. 如何将服务器端文件 自动下载并保存到客户端IE临时文件夹 或者指定文件夹

    如何将服务器端文件 自动下载并保存到客户端IE临时文件夹? 对于这个问题,技术上其实比较容易实现. 而我现在要说的是,如何自动下载并保存客户端?如果不自动下载,IE会弹出对话框提示,是否'打开' or ...

  3. 获取log文件信息,并保存至Excel文件

    获取log文件信息,并保存至Excel文件 日常工作中,可能需要我们从txt文件中截取海量的信息,只要寻找到这种信息的规律或者定位好信息情况,在我的txt文件中有海量的信息,而我只需要截取09/11/ ...

  4. FFmpeg从视频中提取音频保存为mp3文件

    如何把视频文件中的音频数据提取出来,网络上有不少音频提取工具,但作为技术人员提到音视频处理,肯定会想到FFmpeg.本文介绍了如何基于FFmpeg从视频中提取音频,然后将音频保存为mp3格式的音频文件 ...

  5. react——利用jszip实现文件批量下载并打包成zip文件

    本文章主要记录利用jszip实现文件批量下载图片,文档.mp3,视频(MP4)等文件,一般而言前端实现下载功能一般都是通过a链,这在下载单个文件的场景很实用,但如果是批量下载很多个文件,同样也可以用a ...

  6. mysql存储csv文件_MySQL 查询结果保存为CSV文件

    MySQL支持将查询结果直接导出为文本格式,格式如下: into outfile '导出的目录和文件名'                  指定导出的目录和文件名 fields terminated ...

  7. Tensorflow保存模型详解(进阶版二):如何保存最近的.ckpt文件 及 如何分开保存.ckpt数据文件和.meta图文件

    在学会了如何有选择的保存变量后,我们来学习如何如何分开保存.ckpt数据文件和.meta图文件 和 如何 保存最近几轮的.ckpt数据文件. 直接上代码: import tensorflow as t ...

  8. ubuntu appimage文件怎么安装_iOS 13描述文件怎么下载?iOS 13描述文件安装注意事项...

    ​北京时间6月4号凌晨1点,苹果将于圣何塞会议中心正式召开WWDC19全球开发者大会.对于此次大会,相信绝大部分用户最期待的还是iOS 13移动系统. 发布会结束之后,苹果也会第一时间给开发者用户推送 ...

  9. 关于WebView加载H5页面下载文件和下载完毕后自动打开文件

    前段时间有个项目需要在H5页面里下载文档文件,由于项目需求这里采用Android系统自带DownloadManager来进行后台自动下载管理,我们只需要稍微设置几个参数就进行文件下载了,并且下载进行时 ...

最新文章

  1. Java学习总结:56(Stack子类)
  2. 什么是泛型缓存和静态构造函数?
  3. JAVA数据库:MySQL入门
  4. Linux高负载下优化MYSQL(一)
  5. 【Flask】Request和RequestParser类
  6. 【Echarts】——上手Demo
  7. 微软公司将在英国开设三个数据中心
  8. Loadrunner中对中文进行UTF-8转码的探索
  9. Nginx服务的ssl认证和htpasswd认证
  10. 分享]人生忠告——七天改变人生影响世界
  11. 苹果Mac 3D 数字绘画工具:Substance 3D Painter
  12. 时空解析理论的实验检验方法
  13. vue写数字翻牌效果_封装vue版数字翻牌器
  14. 31个工作习惯(转)
  15. JAVA系统学习之三大版本JavaSE、javaEE、javaME
  16. 使用JSON.parse字符串转换json报错解决办法
  17. 视频信息和信号的特点
  18. 电脑 桌面图标上多了一个白色的文档图标 怎么去掉?
  19. 操作系统课程设计-二级文件系统,Windows平台版本,c语言
  20. 安徽省软考报名时间成绩查询安徽省教育考试院安徽省人事考试网报名入口

热门文章

  1. MySQL连接查询技术总结
  2. 汉字转换为拼音的函数
  3. H264 raw stream获取nalu的长度信息
  4. Redis -- 主从
  5. libreCAD源码阅读笔记3
  6. java技术学习交流群,诚邀您的加入
  7. 微信小程序setData的使用
  8. ping 请求超时是什么原因呢?
  9. 大数据必学Java基础(五):第一段程序
  10. 电话簿管理系统(超详细)