如何使用NSFileHandle和NsurlConnection将WAV文件从网络下载到iPhone的位置?
-
22-09-2019 - |
题
我想从Web服务下载WAV文件,在iPhone上缓存,然后使用Avaudioplayer播放它。在处理相对较大的文件时,使用nsfilehandle和nsurlconnection似乎是一个可行的解决方案。但是,在模拟器中运行该应用程序后,我在定义的目录(NSHOMEDIRECTORY/TMP)下没有看到任何保存的文件。以下是我的基本代码。我在哪里做错?任何想法都将受到赞赏!
#define TEMP_FOLDER [NSHomeDirectory() stringByAppendingPathComponent:@"tmp"]
- (void)downloadToFile:(NSString*)name
{
NSString* filePath = [[NSString stringWithFormat:@"%@/%@.wav", TEMP_FOLDER, name] retain];
self.localFilePath = filePath;
// set up FileHandle
self.audioFile = [[NSFileHandle fileHandleForWritingAtPath:localFilePath] retain];
[filePath release];
// Open the connection
NSURLRequest* request = [NSURLRequest
requestWithURL:self.webURL
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
NSURLConnection* connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
}
#pragma mark -
#pragma mark NSURLConnection methods
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData*)data
{
[self.audioFile writeData:data];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError*)error
{
NSLog(@"Connection failed to downloading sound: %@", [error description]);
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
[connection release];
[audioFile closeFile];
}
解决方案
NSFileHandle fileHandleForWritingAtPath:
需要文件已经存在。您如何创建文件?
其他提示
你在哪里
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
代表?
这是您应该写/保存文件的地方。
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData*)data
这是您附加收到的数据的地方。
不隶属于 StackOverflow