ios文件下载实现(包含字符的反转和特定字符查找)

这次介绍下文件下载的方式:分同步和异步两种。

直接上代码:

///.H文件

@interface UploadFileViewController () {

 }

@property (strong, nonatomic) NSMutableData *connectionData;

@property (strong, nonatomic) NSString *fileName;

@end

//.m文件

- (void)viewDidLoad

{

    self.fileName = [NSStringstringWithFormat:@"%@",@"Defualt.txt"];

}

//下载文件保存的路径 (Caches目录下)

- (NSString *)getFullFileName:(NSString *)name {

    NSArray* documentPaths =NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES);

    NSString* documentDir = [documentPaths objectAtIndex:0];

    return [documentDir stringByAppendingFormat:@"/%@", name];

}

从下载url中解析出文件名称 例如:http://192.168.01.1/test/abc.zip 就解析出abc.zip

- (void)fileNameWithUrl:(NSString *)aUrl {

    NSString *reverseUrl = [NSStringstringReverse:aUrl];

    NSRange reverseRange = [NSStringstringFindTheString:reverseUrl TheString:@"/"];

    if (reverseRange.length >0) {

        self.fileName =  [NSStringstringReverse:[reverseUrl substringToIndex:reverseRange.location]];

    }

}

//根据url同步下载文件

- (void)synchDown:(NSString *)aUrl {

    [selffileNameWithUrl:aUrl];

    NSURL *url = [NSURLURLWithString:aUrl];

    NSURLRequest *request = [NSURLRequestrequestWithURL:url];

    NSError *error = nil;

    NSData *data = [NSURLConnectionsendSynchronousRequest:request returningResponse:nilerror:&error];

    if (nil != data) {

        if (![data writeToFile:[selfgetFullFileName:_fileName] atomically:YES]) {

            NSLog(@"writeToFile failed....%@",_fileName);

        }

        NSLog(@" writeToFile ok ");

    }

    else {

        NSLog(@" synchDown Failed.  %@",[errordescription]);

    }

}

//根据url异步下载文件

- (void)asynchDown:(NSString *)aUrl {

    [selffileNameWithUrl:aUrl];

    NSURL *url = [NSURLURLWithString:aUrl];

    NSURLRequest *request = [NSURLRequestrequestWithURL:url];

    NSURLConnection *newConnection = [[NSURLConnectionalloc] initWithRequest:request delegate:self startImmediately:YES];

}

#pragma mark - NSURLConnectionDelegate

- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{

    [self.connectionDataappendData:data];

}

- (void) connectionDidFinishLoading :(NSURLConnection *)connection{

    if (![self.connectionDatawriteToFile:[selfgetFullFileName:_fileName] atomically:YES]) {

        NSLog(@"保存失败。。。。");

    }

    else {

        NSLog(@"保存ok。。。。");

    }

}


//用到类目

//字符串反转

+ (NSString *)stringReverse:(NSString *)string {

    NSMutableString *s = [NSMutableStringstring];

    for (NSUInteger i = [stringlength]; i > 0; i--) {

        [s appendString:[stringsubstringWithRange:NSMakeRange(i-1,1)]];

    }

    return s;

}

//在字符串中找出特定的字符

+ (NSRange)stringFindTheString:(NSString *)string TheString:(NSString *)theString {

    NSRange range;

    range = [string rangeOfString:theString];

    if (range.location !=NSNotFound) {

        return range;

    }

    return range;

}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值