2010-08-31 79 views
2

任何人都知道如何測試字符串是否是Mac OS X中的有效文件名,而不是嘗試使用該名稱創建文件?如何在Mac OS X中測試有效的文件名

我遇到的問題是,有時文件名可能太大。 OSX對文件名和Unicode字符有一個字節限制,因爲它們可以超過1個字節,所以不能檢查字符串的長度。

+0

此外,該字符串可能有一個無效的Unicode字符序列(例如,破壞的代理對)或斜線。 – 2010-08-31 20:15:12

+0

很大程度上取決於您正在寫入的文件系統。特別是我相信很多網絡文件系統在實際嘗試之前無法告訴你什麼是有效的。 – 2010-08-31 23:15:13

回答

-2

我認爲OSX上唯一無效的字符(除了控制字符)是冒號 - 所以你只需要測試新文件名是否包含冒號。

+1

不好的建議。比如說,「/」是什麼? – 2014-09-05 09:31:26

0

使用NSFileManager.

- 更新時間:

試試這個:

if([testPath compare: [NSString stringWithUTF8String:[testPath fileSystemRepresentation]]] == NSOrderedSame) { 
    //testPath is a valid Path 
} 

什麼就做雖然不保證。

+0

我需要知道文件名是否有效,而不是文件是否存在。 – Randall 2010-08-31 17:34:36

+1

試試這個'[NSString stringWithUTF8String:[myPath fileSystemRepresentation]];' – 2010-08-31 17:38:02

+0

我已經試過用一本書中含有冒號的任意句子。然而,使用這種方法,這本書中的字符串被認爲是有效的路徑......(這顯然是錯誤的) – Tafkadasoh 2012-11-27 15:48:12

1

在Mac OS X上,文件不過是資源;路徑/文件名就是位置。使用+ (id)fileURLWithPath:(NSString *)path創建一個NSURL對象。如果文件名是有效的,該方法將只返回一個有效的對象。從蘋果文檔

摘錄:

  • NSURL對象可以用來指文件,是這樣做的首選方式。
  • NSURL類將失敗,如果傳遞的路徑創建一個新的NSURL對象是沒有很好地形成,該路徑必須符合RFC 2396