天天看點

[工具類]檔案或檔案夾xx已存在,則重命名為xx(n)

最近在弄一個檔案傳輸的一個東東,在接收檔案的時候,如果檔案已經存在,該如何處理?提示?删除?感覺直接删除實在不太合适,萬一這個檔案對使用者來說很重要,你給他删除了肯定不行。然後就想到了,windows系統在建立檔案的時候,如果檔案存在就以(n)這樣的形式建立。當時覺得這種方式确實不錯,查找了windows的api,未果,然後就想如果讓自己實作,該如何去實作?

[工具類]檔案或檔案夾xx已存在,則重命名為xx(n)
[工具類]檔案或檔案夾xx已存在,則重命名為xx(n)

測試用的儲存的目錄,結構如下:

[工具類]檔案或檔案夾xx已存在,則重命名為xx(n)

測試

如果接收的檔案為1.txt,則擷取到的新檔案名1(2).txt,因為與1.txt名稱相似的檔案已經存在的最大檔案索引為1.

如果接收的檔案夾名稱為建立檔案夾,則擷取到的新檔案夾名為建立檔案夾(3),因為與建立檔案夾名稱相似的檔案夾的最大索引為2。

[工具類]檔案或檔案夾xx已存在,則重命名為xx(n)
[工具類]檔案或檔案夾xx已存在,則重命名為xx(n)

測試結果

[工具類]檔案或檔案夾xx已存在,則重命名為xx(n)

如果接收的檔案為1(1).txt,則擷取到的新檔案名1(2).txt,因為與1(1).txt名稱相似的檔案已經存在的最大檔案索引為1.

如果接收的檔案夾名稱為建立檔案夾(1),則擷取到的新檔案夾名為建立檔案夾(3),因為與建立檔案夾名稱相似的檔案夾的最大索引為2。

[工具類]檔案或檔案夾xx已存在,則重命名為xx(n)

如果接收的檔案為1(2).txt,則擷取到的新檔案名1(2).txt,因為與1.txt名稱相似的檔案已經存在的最大檔案索引為1.(傳進來的檔案名中帶的索引大于已經存在的索引)

如果接收的檔案夾名稱為建立檔案夾(1),則擷取到的新檔案夾名為建立檔案夾(3),因為與建立檔案夾名稱相似的檔案夾的最大索引為2(這裡在調用該方法的時候,可以首先判斷一下該目錄是否存在,如果不存在,直接建立不再走該方法,那麼儲存的檔案名為:建立檔案夾(1))。

[工具類]檔案或檔案夾xx已存在,則重命名為xx(n)

如果接收的檔案夾名稱為建立檔案夾(3),索引大于已經存在的檔案夾的最大索引,則儲存為建立檔案夾(3)

[工具類]檔案或檔案夾xx已存在,則重命名為xx(n)

這裡隻對檔案名為1(1)(1).txt的做了處理,檔案夾的以類似建立檔案夾(n)這樣的名稱為主。

[工具類]檔案或檔案夾xx已存在,則重命名為xx(n)
[工具類]檔案或檔案夾xx已存在,則重命名為xx(n)

如果test目錄下已經存在:1(1)(2).txt和建立檔案夾 (2) (1),則傳回的結果

[工具類]檔案或檔案夾xx已存在,則重命名為xx(n)

這個類确實解決了一些問題,但是針對一些惡意輸入的檔案或者檔案夾名也是沒辦法的,隻能在調用重命名方法之前再加上一個判斷檔案或者目錄是否存在的情況,如果存在再走重命名方法,如果不存在則直接儲存就行。

如果您有更好的方式,請留言。

也許你會看這篇文章:

<a href="http://www.cnblogs.com/wolf-sun/p/4229945.html">[工具類]檔案或檔案夾xx已存在,則重命名為xx(n)(2)</a>

部落格位址:

<a href="http://www.cnblogs.com/wolf-sun">http://www.cnblogs.com/wolf-sun/</a>

部落格版權:

本文以學習、研究和分享為主,歡迎轉載,但必須在文章頁面明顯位置給出原文連接配接。

如果文中有不妥或者錯誤的地方還望高手的你指出,以免誤人子弟。如果覺得本文對你有所幫助不如【推薦】一下!如果你有更好的建議,不如留言一起讨論,共同進步!

再次感謝您耐心的讀完本篇文章。http://www.cnblogs.com/wolf-sun/p/4162410.html

繼續閱讀