3

Webサイトにファイルが存在するかどうかを確認するにはどうすればよいですか?私はNSURLConnection自分NSURLRequestとオブジェクトを使用して、 delegateメソッドNSMutableDataに返されるものを格納しています。didReceiveData:このconnectionDidFinishingLoading:メソッドでは、NSMutableDataオブジェクトをファイルシステムに保存します。すべて良い。ただし、ファイルがWebサイトに存在しない場合でも、コードは実行され、データを取得してファイルを保存します。

ダウンロードリクエストを行う前に、ファイルが存在することを確認するにはどうすればよいですか?

4

2 に答える 2

3

を実装します。connection:didReceiveResponse:これは前に呼び出されconnection:didReceiveData:ます。

応答はNSHTTPURLResponseオブジェクトである必要があります—HTTPリクエストを発行していると仮定します。したがって[response statusCode] == 404、ファイルが存在するかどうかを確認できます。

NSURLが404を返すかどうかの確認も参照してください。

于 2010-01-07T16:06:07.270 に答える
3

1.バンドル内のファイル

NSString *path = [[NSBundle mainBundle] pathForResource:@"image"    ofType:@"png"];
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:path];
if (fileExists) {
NSLog(@"file exists");
}
else
{
NSLog(@"file not exists");
}

2.ディレクトリ内のファイル

NSString* path =  [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,    NSUserDomainMask, YES) objectAtIndex:0];
path = [path stringByAppendingPathComponent:@"image.png"];
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:path];
if (fileExists) {
NSLog(@"file exists");
}
else
{
NSLog(@"file not exists");
} 

3.ウェブでファイル

NSString *urlString=@"http://eraser2.heidi.ie/wp-content/plugins/all-in-one-seo-pack-pro/images/default-user-image.png";
NSURL *url=[NSURL URLWithString:urlString];
NSURLRequest *request=[NSURLRequest requestWithURL:url];
NSURLConnection *connection=[NSURLConnection connectionWithRequest:request delegate:self];
[connection start];

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
NSLog(@"%@",response);
[connection cancel];
NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response;
int code = (int)[httpResponse statusCode];
if (code == 200) {
    NSLog(@"File exists");
}
else if(code == 404)
{
    NSLog(@"File not exist");
}
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
NSLog(@"File not exist");
}
于 2015-04-30T08:51:58.387 に答える