您的位置:首页 > 理论基础 > 计算机网络

文件的读写和网络

2013-10-31 09:12 113 查看
文件的读

文件的读取非常方便

NSString类

initWithContentsOfFile:encoding: error

stringWithContentsOfFile:encoding: error:

writeToFile: atomically:encoding: error:

1首先创建文件路径(本项目以内的)

NSString*bundlePath=nil;

bundlePath=[[NSBundle mainBundle] pathForResource:@"Read"ofType:@""];

2读取文件zhong中内容

NSError*error;

NSString*readerStr= [NSString stringWithContentsOfFile:bundlePath

encoding:NSUTF8StringEncoding

error:&error];

NSLog(@"%@",readerStr);

文件的写

1 获取路径

NSString*writeFile=@"/Users/ibokan/Desktop/abc.txt";

2 判断是否xi写入成功,如果成功则输出1

BOOLs=[readerStr writeToFile:writeFile

atomically:YES

encoding:NSUTF8StringEncoding

error:&error];

if(s) {

NSLog(@"%@",[error description]);

}

NSLog(@"%d",s);

问题:如果传过来的shi是图片等东西呢?应该用什么来接收?

答:二进制流

文件的读取非常方便

字节数据缓冲类(byte buffer)

主要用于存储二进制

NSData

dataWithContentsOfFile:

initWithContentsOfFile:

1创建路径

NSData*data=nil;

data=[NSData dataWithContentsOfFile:bundlePath];

2读取数据

//此种方法不成功~原因在于格式没有被zhi指定为什么类型

//NSString *str=[NSString stringWithFormat:@"%@",data];

NSString*str= [[NSStringalloc]initWithData:data encoding:4];

NSLog(@"%@",str);

3写入数据

[data writeToFile:writeFile atomically:YES];

//文件管理类

NSFileManager*manger=[NSFileManager defaultManager];

NSString*targetPath=@"/Users/ibokan/Desktop/ios43/abc";

//如果创建成功或者已经存在返回YES

BOOL s1= [manger createDirectoryAtPath:targetPath

withIntermediateDirectories:YES

attributes:nil

error:&error];

NSLog(@" s1=%d",s1);

//创建目录

NSString*targetPath1=@"/Users/ibokan/Desktop/ios43/abc/abc.txt";

//NSData *data1=[NSData dataWithContentsOfFile:bundlePath];

BOOLs2=[manger createFileAtPath:targetPath1 ];

NSLog(@"s2=%d",s2);

HTTP请求方式

GET 请求。 POST 请求。

两种方式的区别

GET 通常用于请求URL并得到资源。

POST 用于向服务器添加新的内容。

URL连接方式

同步连接。 异步连接。

两种方式的主要区别

同步连接时,UI“冻结”。 异步连接时,UI不冻结

同步连接

同步连接是iOS中网络连接的一种方式,当请求的数据量小时,同步连接是一个很好的选 择。

UI“冻结”是它的一个缺点。 GET和POST两种请求都可以发起同步连接。

同步创建一个同步请求

***************************以下是个人所写同步,异步的代码********************

同步:

/*

NSString *str1 = [NSString stringWithContentsOfURL:url

encoding:4

error:nil];

NSLog(@"str1 = %@",str1);

*/

/*

NSURLRequest *req = nil;

req=[NSURLRequest requestWithURL:url

cachePolicy:NSURLRequestReloadIgnoringCacheData

timeoutInterval:20.0f];

NSHTTPURLResponse *resp=nil;

NSError *error = nil;

NSData *data=[NSURLConnection sendSynchronousRequest:req

returningResponse:&resp

error:&error];

if (resp)

{

NSLog(@"responseCode:%d",[resp statusCode]);

}

NSString *str1 = [[NSString alloc] initWithData:data

encoding:4];

NSLog(@"str1 = %@",str1);

*/

NSURL * url = [NSURL URLWithString:@"http://best50.cn:8080/php/new_iphone.php"];

//创建一个可变的请求

NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10.0f];

//将请求方式设置为POST

//?req=2&id=13

[request setValue:@"2" forKey:@"req"];

[request setValue:@"13" forKey:@"id"];

[request setHTTPMethod:@"POST"];

//设置回应和错误的指针变量

NSHTTPURLResponse * response = nil;

NSError * error = nil;

//发起同步请求

NSData * data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

//打印回应和错误信息

NSLog(@"response = %@",[NSHTTPURLResponse localizedStringForStatusCode: [response statusCode]]);

NSLog(@"error = %@",[error localizedDescription]);

//打印返回的字符串信息

NSString * str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

NSLog(@"str = %@",str);

*********************异步*********************************

//初始化一个URL

NSURL *url = [NSURL URLWithString:@"http://www.oschina.net/ios/242/objective-c"];

//创建一个请求

NSURLRequest * request = [NSURLRequest requestWithURL:url];

//发起异步连接

//[NSURLConnection connectionWithRequest:request delegate:self];

NSURLConnection *con = nil;

con = [[NSURLConnection alloc] initWithRequest:request

delegate:self

startImmediately:YES];

[con start];

//其他的事情交给代理方法去完成

NSLog(@"NSURLConnection 完成");

return YES;

}

- (void)connection:(NSURLConnection *)connection

didReceiveResponse:(NSURLResponse *)response

{

//NSLog(@"connection = %@",connection);

NSLog(@"%s",__func__);

_data = [[NSMutableData alloc] init];

}

- (void)connection:(NSURLConnection *)connection

didReceiveData:(NSData *)data

{

//NSLog(@"connection = %@",connection);

NSLog(@"%s",__func__);

[_data appendData:data];

}

-(void)connectionDidFinishLoading:(NSURLConnection *)connection

{

//NSLog(@"connection = %@",connection);

NSLog(@"%s",__func__);

NSString *str = [[NSString alloc] initWithData:_data

encoding:4];

NSLog(@"str= %@",str);

//[str release];

//[_data release];

}

-(void)connection:(NSURLConnection *)connection

didFailWithError:(NSError *)error

{

//_data = nil;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: