UITableView의 iOS 문서 디렉토리에 아카이브 파일을 준비 하시겠습니까?
문서 디렉토리에 파일을 저장하기 위해 다음 코드를 설정했습니다.
NSLog(@"Saving File...");
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.reddexuk.com/logo.png"]];
AFHTTPRequestOperation *operation = [[[AFHTTPRequestOperation alloc] initWithRequest:request] autorelease];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"logo.png"];
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:path append:NO];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Successfully downloaded file to %@", path);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
[operation start];
그러나 업데이트로 저장하면 파일을 UITableView에 추가하고 싶습니다. UITableView의 파일을 탭하면 UIWebView가 해당 파일로 이동하기를 원합니다 (모두 오프라인).
또한 -http : //www.reddexuk.com/logo.png 대신 "logo.png"와 같은 파일 이름과 끝을 어떻게 얻을 수 있습니까?
어떻게 할 수 있습니까?
다음은 디렉토리의 내용을 가져 오는 데 사용하는 방법입니다.
-(NSArray *)listFileAtPath:(NSString *)path
{
//-----> LIST ALL FILES <-----//
NSLog(@"LISTING ALL FILES FOUND");
int count;
NSArray *directoryContent = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:NULL];
for (count = 0; count < (int)[directoryContent count]; count++)
{
NSLog(@"File %d: %@", (count + 1), [directoryContent objectAtIndex:count]);
}
return directoryContent;
}
-(NSArray *)findFiles:(NSString *)extension{
NSMutableArray *matches = [[NSMutableArray alloc]init];
NSFileManager *fManager = [NSFileManager defaultManager];
NSString *item;
NSArray *contents = [fManager contentsOfDirectoryAtPath:[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] error:nil];
// >>> this section here adds all files with the chosen extension to an array
for (item in contents){
if ([[item pathExtension] isEqualToString:extension]) {
[matches addObject:item];
}
}
return matches; }
위의 예는 매우 자명합니다. 두 번째 질문에 답이되기를 바랍니다.
디렉토리의 내용을 얻으려면
- (NSArray *)ls {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSArray *directoryContent = [[NSFileManager defaultManager] directoryContentsAtPath: documentsDirectory];
NSLog(@"%@", documentsDirectory);
return directoryContent;
}
마지막 경로 구성 요소를 얻으려면
[[path pathComponents] lastObject]
감사합니다 Alex,
다음은 Swift 버전입니다.
func listFilesOnDevice() {
let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let documentDirectory = paths[0] as! String
let manager = NSFileManager.defaultManager()
if let allItems = manager.contentsOfDirectoryAtPath(documentDirectory, error: nil) {
println(allItems)
}
}
나는 iOS 포스트 샌드 박싱에서 상황이 변경되었습니다.
응용 프로그램 내에서 읽기 / 쓰기 가능한 폴더의 모든 경로는 것입니다 지금의 해시를 가지고 애플은 언제든지 해당 경로를 변경할 수있는 권리를 보유합니다. 그것은 것 확실히 모든 앱 시작에 변경합니다.
원하는 폴더의 경로를 가져와야하며 과거에 할 수 있었던 것처럼 하드 코딩 할 수 없습니다.
문서 디렉토리를 요청하고 반환 배열에서 위치 0에 있습니다. 그런 다음 해당 값을 사용하여 NSFileManager에 제공하여 디렉토리 내용을 가져옵니다.
아래 코드는 iOS 7 및 8에서 작동하여 문서 디렉토리 내의 콘텐츠 배열을 반환합니다. 자신의 선호도에 따라 정렬 할 수 있습니다.
+ (NSArray *)dumpDocumentsDirectoryContents {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0];
NSError *error;
NSArray *directoryContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsPath error:&error];
NSLog(@"%@", directoryContents);
return directoryContents;
}
보다 합리적인 파일 이름 :
NSString *filename = [[url lastPathComponent] stringByAppendingPathExtension:[url pathExtension]];
NSDirectoryEnumerator *dirEnum = [[NSFileManager defaultManager] enumeratorAtPath:dir_path];
NSString *filename;
while ((filename = [dirEnum nextObject]))
{
// Do something amazing
}
디렉토리의 모든 파일을 열거하기 위해
스위프트 3.x
let documentDirectory = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
if let allItems = try? FileManager.default.contentsOfDirectory(atPath: documentDirectory) {
print(allItems)
}
스위프트 5
MP4 비디오 인 Documents 디렉토리에있는 모든 파일의 URL 배열을 반환하는 함수입니다. 모든 파일을 원하면 filter
.
최상위 디렉토리에있는 파일 만 확인합니다. 하위 디렉토리에있는 파일도 나열하려면 .skipsSubdirectoryDescendants
옵션을 제거하십시오 .
func listVideos() -> [URL] {
let fileManager = FileManager.default
let documentDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0]
let files = try? fileManager.contentsOfDirectory(
at: documentDirectory,
includingPropertiesForKeys: nil,
options: [.skipsSubdirectoryDescendants, .skipsHiddenFiles]
).filter {
$0.lastPathComponent.hasSuffix(".mp4")
}
return files ?? []
}
'ProgramingTip' 카테고리의 다른 글
반환 형식에 새 형식을 정의 할 수 없습니다 .-C ++ (0) | 2020.12.31 |
---|---|
오류 : 선택 명령이 사용자에게 거부되었습니다. (0) | 2020.12.31 |
신속하게 요금 버튼에 대한 링크를 추가 비용 부담해야합니까? (0) | 2020.12.31 |
Laravel 마이그레이션 : 클래스 "찾을 수 없음" (0) | 2020.12.31 |
최대 용량 모드에서 ResultSet을 추출 할 수 없습니다. (0) | 2020.12.30 |