我希望用戶選擇任何存在於她/他的iPhone中的文件,以便它用作電子郵件附件。爲此,我想顯示iPhone中存在的所有文件和文件夾的列表。但是,我將如何獲得這些文件的列表?有什麼方法可以獲得該列表嗎?如何列出iPhone SDK中的所有文件夾及其子目錄/文件?
回答
考慮到您的應用在沙箱中運行,並且無法獲取該沙箱以外的任何文件夾/文件。
的ObjectiveC
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSFileManager *manager = [NSFileManager defaultManager];
NSArray *fileList = [manager contentsOfDirectoryAtPath:documentsDirectory error:nil];
for (NSString *s in fileList){
NSLog(@"%@", s);
}
斯威夫特4
guard let documentsDirectory = try? FileManager().url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true) else { return }
guard let fileEnumerator = FileManager.default.enumerator(at: documentsDirectory, includingPropertiesForKeys: nil, options: FileManager.DirectoryEnumerationOptions()) else { return }
while let file = fileEnumerator.nextObject() {
print(file)
}
這裏是最慢的方法(?):
NSFileManager * fileManager = [NSFileManager new];
NSArray * subpaths = [fileManager subpathsAtPath:path];
但至少應該點你更專門的impl滿足您的需求。
允許您根據需要枚舉的略低級別抽象包括NSDirectoryEnumerator
和CFURLEnumerator
。根據目錄的深度,與-[NSFileManager subpathsAtPath:]
相比,這些文件系統可以節省很多不必要的與文件系統的交互。
你能否提一下第二行中變量「路徑」的值。 –
@穆罕默德那麼,你不能訪問文件系統上任何地方的任何文件,因爲它是沙盒。您*可以*訪問您的應用程序的本地數據 - simpleBob的「documentsDirectory」演示瞭如何獲得該路徑。 – justin
謝謝你的迴應,一個小小的混亂。如果我的文件存在於iPhone的照片文件夾中,該怎麼辦?我可以訪問它嗎?我的意思是說,我可以列出照片文件夾中存在的所有文件。 –
您可以通過NSFileManager.enumeratorAtPath
使用NSDirectoryEnumerator
從文檔:
NSString *docsDir = [NSHomeDirectory() stringByAppendingPathComponent: @"Documents"];
NSFileManager *localFileManager=[[NSFileManager alloc] init];
NSDirectoryEnumerator *dirEnum =
[localFileManager enumeratorAtPath:docsDir];
NSString *file;
while ((file = [dirEnum nextObject])) {
if ([[file pathExtension] isEqualToString: @"doc"]) {
// process the document
[self scanDocument: [docsDir stringByAppendingPathComponent:file]];
}
}
我FileExplorer控制這是iOS的文件瀏覽器,滿足您的大多數要求的作者。請注意,它允許您僅瀏覽放置在沙箱內的文件和目錄。
下面是我的一些控制功能:
- 可能性來選擇文件和/或目錄,如果有必要爲
- 方法可行刪除文件或/和目錄是否存在需要
- 內置搜索功能
- 查看音頻,視頻,圖像和PDF文件。
- 可以添加對任何文件類型的支持。
你可以找到我的控制here。
SWIFT 3
let fileManager:FileManager = FileManager()
let files = fileManager.enumerator(atPath: NSHomeDirectory())
while let file = files?.nextObject() {
print("Files::",file)
}
- 1. 列出Google Drive SDK中的所有文件夾及其文件
- 2. 如何在php中列出目錄及其子目錄的所有文件?
- 3. 如何從根文件夾及其所有子文件夾生成目錄樹?
- 4. 如何列出所有的文件夾及其文件在php
- 5. 如何獲得`/ var`及其子目錄中的所有文件,並忽略列出文件夾名稱?
- 6. 打印目錄及其子目錄中的所有文件
- 7. 獲取文件夾及其子文件夾中所有文件的列表
- 8. 快速列出目錄及其所有子目錄中的文件
- 9. 如何獲取目錄和文件名及其子文件夾
- 10. 獲取目錄中的所有文件夾和子文件夾
- 11. 統計目錄及其子目錄中的所有文件
- 12. 如何刪除文件夾及其子文件夾內的所有空文件?
- 13. 定位文件夾及其所有子文件夾/子文件夾
- 14. 文件列表文件夾和所有孫子的子目錄
- 15. 如何獲取bash中的目錄及其所有子目錄中的文件?
- 16. gzip文件夾及其子文件夾
- 17. 列出目錄+子目錄中的所有文件和目錄
- 18. 如何列出ftp目錄中的所有文件夾?
- 19. MVC4列出文件夾中的所有子文件夾
- 20. 在文件夾中列出目錄中所有文件的文件信息
- 21. 如何用C++刪除目錄及其中的所有文件?
- 22. 閱讀目錄子文件夾中的所有文件
- 23. 列出目錄中的文件和所有子目錄
- 24. 列出目錄和子目錄中的所有jpg文件
- 25. 列出目錄中的所有文件和子目錄C#
- 26. 列出目錄中的所有子目錄和文件
- 27. 列出目錄中的所有子目錄和文件
- 28. 列出目錄中的所有文件
- 29. 迭代iphone中的文件夾的所有子文件夾
- 30. 使用find來刪除所有的子目錄(及其文件)
但是比如我有iPhone的硬盤.PDF本文件的地方,我想找到該文件或希望得到該文件比...的路徑? ? –
您不能將所有文件存儲在應用程序沙箱中。您可以告訴系統您的應用支持PDF,並允許其他應用發送您的應用PDF。沒有其他辦法可以做到。 – rckoenes