2013-09-25 155 views
0

我是一名大一新生,我的學習有問題。fileExistsAtPath:isDirectory:的參數是什麼意思?

當我使用fileExistsAtPath:isDirectory:方法時,我不知道isDirectory之後的參數意義。

我看到isDirectory之後的參數在許多代碼中始終爲NO,當他們要確認文件夾的存在時。文檔說「如果path是一個目錄或者如果最終路徑元素是一個符號鏈接指向一個目錄「。我認爲它應該設置爲YES。

這是我的代碼:

NSFileManager *fileManager = [NSFileManager defaultManager]; 
BOOL isDir; 
if ([fileManager fileExistsAtPath:@"myDocPath" isDirectory:&isDir] == YES) 
{ 
    NSLog(@"Directory is Exists!"); 
} 
    else 
    { 
     NSLog(@"Directory is not Exists!"); 
    } 

感謝您的幫助,我的英語很糟糕:)

回答

1

歡迎計算器!我希望你喜歡參加這裏。

NSFileManager's fileExistsAtPath: isDirectory: method需要的路徑(一個的NSString對象)和「isDirectory:」的一部分是BOOL 地址,這意味着告訴您如果該方法(在調用此方法之前聲明一個布爾變量的)文件指向的路徑實際上是一個文件夾(或目錄),然後返回YES。

所以,如果您通過調用它:

BOOL directoryBool; 
BOOL doesSomethingExistHere = [[NSFileManager defaultManager] fileExistsAtPath: @"/etc" isDirectory: &directoryBool]; 
if(doesSomethingExistHere) 
{ 
    NSLog(@"something exists at the path"); 
    if(directoryBool) 
     NSLog(@"and it's a directory"); 
    else 
     NSLog(@"it's a file, not a directory"); 
} else { 
    NSLog(@"nothing exists at the path you specified"); 
} 

您應該看到參數是如何工作的。

+0

感謝您的幫助! –

+0

感謝您的幫助!關於你的代碼,我知道我必須設置一個BOOL指針,而不是「isDirectory」之後的BOOL變量。我想如果我想確認文件夾而不是文件的存在,我必須設置YES到directoryBool!但是directoryBool是NO。 –

+0

您無需在任何位置設置'directoryBool'。您將* directoryBool'局部變量的*地址傳遞給方法。該方法取消引用該地址以寫入您的變量,以便信息可用於您的代碼。你沒有告訴方法有關路徑的任何信息,你要求它告訴你。該方法忽略地址處的「BOOL」值的原始值;它只是寫在那裏,它不會讀它。 –