在ios開發中,刪除sandbox中documents目錄下的檔案可能是個比較常用的操作,下面是我封裝的部分**:
- (void)viewdidload
}- (nsstring *)getdirectoryofdocumentfolder
return documentspath;
}- (nsstring *)getdirectoryofdocumentfilewithname:(nsstring *)filename
return nil;
}- (bool)isfileexitsatpath:(nsstring *)filepath
return no;
}- (void)removefileatpath:(nsstring *)filepath
else
}else
}在viewdidload方法中,filename給出了documents資料夾中的檔名,然後獲取其完整路徑,並通過remove方法來移除。
在documents下新建乙個test資料夾,執行後控制台輸出:
2014-03-15 13:02:54.527 removedocument[849:70b] /users/apple/library/application support/iphone simulator/7.0.3/applications/aa0dc0b6-eed1-4f2f-b470-326b7a5cb656/documents/test
2014-03-15 13:02:54.529 removedocument[849:70b] 成功移除檔案
非常成功。
但是,假如filename為空白,例如:
// nsstring *filename = @"test";
nsstring *filename = @"";
執行看看,控制台輸出如下:
2014-03-15 13:01:14.381 removedocument[816:70b] /users/apple/library/application support/iphone simulator/7.0.3/applications/aa0dc0b6-eed1-4f2f-b470-326b7a5cb656/documents
2014-03-15 13:01:14.383 removedocument[816:70b] 成功移除檔案
開啟模擬器目錄:
可以看見整個documents資料夾都被刪除了。原因是如果為stringbyappendingpathcomponent:方法傳遞的引數是@"",那麼返回的就是當前路徑,即documents資料夾的路徑。
這種行為非常非常的危險,要特別小心。
比較保險的方法是先做乙個判斷:
- (void)viewdidload
}- (nsstring *)getdirectoryofdocumentfilewithname:(nsstring *)filename
nsstring *documentspath = [self getdirectoryofdocumentfolder];
if (documentspath)
return nil;
}當然也可以把判斷放在getdirectoryofdocumentfilewithname:方法之外,這個視需求而定。
lucene刪除索引中的Document示例
下面的例項是刪除索引中的document的例項 package com.cn import org.apache.lucene.analysis.standard.standardanalyzer import org.apache.lucene.document.document import o...
MongoDB中刪除document的方法
刪除表裡面的行記錄 db.users.remove 刪除記錄 delete from users where z abc 預設remove沒有帶選項true false的話,是刪除匹配到的全部行記錄.如果要只刪除一條匹配到的記錄可以使用 db.users.remove true db.t1.dele...
IOS寫日誌檔案並儲存到Documents
unity開發ios版的時候常要借助xcode除錯 情景1情景2 情景。方法一 說明 在objective c開發程式的時候,有專門的日誌操作類nslog,它將指定的輸出,輸出到 stderr 我們可以利用xcode的日誌輸出視窗,那麼既然是要記錄到具體日誌檔案,我們就想輸出日誌寫入到具體的日誌檔案...