ASFileManager.m 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. //
  2. // ASFileManager.m
  3. // AIPlayRingtones
  4. //
  5. // Created by mini on 2025/5/28.
  6. //
  7. #import "ASFileManager.h"
  8. @implementation ASFileManager
  9. + (NSURL *)documentsDirectory {
  10. return [NSFileManager.defaultManager URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask].firstObject;
  11. }
  12. + (NSURL *)cacheDirectory {
  13. return [NSFileManager.defaultManager URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask].firstObject;
  14. }
  15. + (void)copyFileWithOverwriteFrom:(NSURL *)sourceURL to:(NSURL *)targetURL {
  16. NSFileManager *fileManager = [NSFileManager defaultManager];
  17. @try {
  18. [self removeItemFrom:targetURL];
  19. [self checkFolderAndCreateFrom:targetURL];
  20. [fileManager copyItemAtURL:sourceURL toURL:targetURL error:nil];
  21. NSLog(@"文件复制成功!");
  22. } @catch (NSException *exception) {
  23. NSLog(@"文件复制失败: %@", exception.description);
  24. }
  25. }
  26. + (void)removeItemFrom:(NSURL *)sourceURL {
  27. NSFileManager *fileManager = [NSFileManager defaultManager];
  28. @try {
  29. if ([fileManager fileExistsAtPath:sourceURL.path]) {
  30. [fileManager removeItemAtURL:sourceURL error:nil];
  31. }
  32. NSLog(@"文件删除成功!");
  33. } @catch (NSException *exception) {
  34. NSLog(@"文件删除失败: %@", exception.description);
  35. }
  36. }
  37. + (void)checkFolderAndCreateFrom:(NSURL *)destinationURL {
  38. NSFileManager *fileManager = [NSFileManager defaultManager];
  39. NSURL *destinationDirectory = [destinationURL URLByDeletingLastPathComponent];
  40. if (![fileManager fileExistsAtPath:destinationDirectory.path]) {
  41. @try {
  42. [fileManager createDirectoryAtURL:destinationDirectory withIntermediateDirectories:YES attributes:nil error:nil];
  43. } @catch (NSException *exception) {
  44. NSLog(@"尝试创建文件夹失败: %@", exception.description);
  45. }
  46. }
  47. }
  48. + (BOOL)fileExistsAtURL:(NSURL *)url {
  49. return [[NSFileManager defaultManager] fileExistsAtPath:url.path];
  50. }
  51. + (void)createDirectoryAtURL:(NSURL *)url error:(NSError **)error {
  52. if (![self fileExistsAtURL:url]) {
  53. [[NSFileManager defaultManager] createDirectoryAtURL:url withIntermediateDirectories:YES attributes:nil error:error];
  54. }
  55. }
  56. + (NSString *)getCacheSubPathAtURL:(NSURL *)url {
  57. NSArray *array = [url.path componentsSeparatedByString:@"/Caches/"];
  58. NSString *cashFilePath = array.lastObject;
  59. return cashFilePath ?: @"";
  60. }
  61. @end
  62. @implementation NSString (CachePath)
  63. - (BOOL)isCachesPath {
  64. return [self containsString:@"/Caches/"];
  65. }
  66. - (NSString *)fillCachePath {
  67. return [[ASFileManager cacheDirectory] URLByAppendingPathComponent:self].path;
  68. }
  69. - (NSURL *)fillCacheURL {
  70. return [[ASFileManager cacheDirectory] URLByAppendingPathComponent:self];
  71. }
  72. - (NSString *)cachesLastURLString {
  73. NSArray *parts = [self componentsSeparatedByString:@"/Caches/"];
  74. if (parts.count > 1) {
  75. return parts.lastObject;
  76. }
  77. return self;
  78. }
  79. @end
  80. @implementation NSString (DocumentPath)
  81. - (BOOL)isDocumentPath {
  82. return [self containsString:@"/Documents/"];
  83. }
  84. - (NSString *)fillDocumentPath {
  85. return [[ASFileManager documentsDirectory] URLByAppendingPathComponent:self].path;
  86. }
  87. - (NSURL *)fillDocumentURL {
  88. return [[ASFileManager documentsDirectory] URLByAppendingPathComponent:self];
  89. }
  90. - (NSString *)documentLastURLString {
  91. NSArray *parts = [self componentsSeparatedByString:@"/Documents/"];
  92. if (parts.count > 1) {
  93. return parts.lastObject;
  94. }
  95. return self;
  96. }
  97. @end