创建一个写入流写入一个文件到程序的临时目录里
2013-11-11 15:53
344 查看
先获得写入的路径:
创建写入流,并打开流
发送url请求
实现代理方法,将文件写入到临时目录
还有写代理方法也要去实现,例如:
- (void)connectionDidFinishLoading:(NSURLConnection *)theConnection
- (void)connection:(NSURLConnection *)theConnection didFailWithError:(NSError *)error
- (void)connection:(NSURLConnection *)theConnection didReceiveResponse:(NSURLResponse *)response
self.filePath = [[NetworkManager sharedInstance] pathForTemporaryFileWithPrefix:@"Get"];
- (NSString *)pathForTemporaryFileWithPrefix:(NSString *)prefix { NSString * result; CFUUIDRef uuid; CFStringRef uuidStr; uuid = CFUUIDCreate(NULL); assert(uuid != NULL); uuidStr = CFUUIDCreateString(NULL, uuid); assert(uuidStr != NULL); result = [NSTemporaryDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"%@-%@", prefix, uuidStr]]; assert(result != nil); CFRelease(uuidStr); CFRelease(uuid); return result; }
创建写入流,并打开流
assert(self.filePath != nil); self.fileStream = [NSOutputStream outputStreamToFileAtPath:self.filePath append:NO]; assert(self.fileStream != nil); [self.fileStream open];
发送url请求
request = [NSURLRequest requestWithURL:url]; assert(request != nil); self.connection = [NSURLConnection connectionWithRequest:request delegate:self]; assert(self.connection != nil);
实现代理方法,将文件写入到临时目录
- (void)connection:(NSURLConnection *)theConnection didReceiveData:(NSData *)data { #pragma unused(theConnection) NSInteger dataLength; const uint8_t * dataBytes; NSInteger bytesWritten; NSInteger bytesWrittenSoFar; assert(theConnection == self.connection); dataLength = [data length]; dataBytes = [data bytes]; bytesWrittenSoFar = 0; do { bytesWritten = [self.fileStream write:&dataBytes[bytesWrittenSoFar] maxLength:dataLength - bytesWrittenSoFar]; assert(bytesWritten != 0); if (bytesWritten == -1) { [self stopReceiveWithStatus:@"File write error"]; break; } else { bytesWrittenSoFar += bytesWritten; } } while (bytesWrittenSoFar != dataLength); }
还有写代理方法也要去实现,例如:
- (void)connectionDidFinishLoading:(NSURLConnection *)theConnection
- (void)connection:(NSURLConnection *)theConnection didFailWithError:(NSError *)error
- (void)connection:(NSURLConnection *)theConnection didReceiveResponse:(NSURLResponse *)response
相关文章推荐
- 【练习题】 使用程序建立一个多级的目录,在每个目录下,新建一个和目录名字一样的txt文件,并写入1990
- mktemp -创建一个临时文件或目录
- 自己写的一个LINUX 下目录文件遍历程序
- 使用write函数来编写一个程序,在程序中指定一个文件,用户可以向程序中一次写入不超过80个字符的数
- 编写一个程序,将 d:\java 目录下的所有.java 文件复制到 d:\jad 目录下,并将原来文件的扩展名从.java 改为.jad。
- 初学jsp写的一个显示系统目录文件的小程序
- Node.js fs模块(文件模块),创建、删除目录(文件),读取写入文件流
- 写的一个读取指定目录下的所有文件和子目录的程序
- 将一个目录写入复合文件
- 在当前程序目录下创建错误日记文件
- 创建一个csv文件,并写入数据
- 编写一个Java程序将当100,101,102,103,104,105个数以数组的形式写入到Dest.txt文件中,并以相反的顺序读出显示在屏幕上
- unity 在指定目录创建文件/读取文件/在文件内写入字符串
- 利用IO的知识,实现一个程序列出某个目录下的所有的”.java”文件。
- java创建一个文件并写入内容
- 在C#.net中做页面上传的程序。用Dhtml的控件:(创建文件上载控件,该控件带有一个文本框和一个浏览按钮。)和类HtmlInputFile的两种方法
- 编写一个程序,将d:\yy目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.txt
- Android 创建目录方法却创建出一个文件的问题
- Windows把一个目录下所有的文件文件中的数据导入程序中
- JAVA 程序中如何拷贝一个目录下的文件及子目录到另一个目录,如何获取系统环境变量等...