iOS 小心刪除Documents中的檔案

2021-12-29 20:57:04 字數 1706 閱讀 5673

在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的日誌輸出視窗,那麼既然是要記錄到具體日誌檔案,我們就想輸出日誌寫入到具體的日誌檔案...