代码之家  ›  专栏  ›  技术社区  ›  sulabh

如何在ios中异步读取Documents目录中的文件

  •  0
  • sulabh  · 技术社区  · 9 年前

    我想异步读取存储在Documents目录中的本地文件。我的代码如下:

    -(NSString *)getLogFilePath
    {
        NSString *logFileNameString = logFile;
        return  [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:logFileNameString];
    }
    
    
     -(NSString *)readStringFromFile
      {
      NSString *fileAtPath =  [self getLogFilePath];
      return [[NSString alloc] initWithData:[NSDataWithContentsOfFile:fileAtPath] encoding:NSUTF8StringEncoding];
      }
    

    请有人在这方面帮助我。 提前感谢。

    1 回复  |  直到 9 年前
        1
  •  3
  •   Luke Melia    7 年前

    使用Grand Central Dispatch和Block语法执行此操作,

    +(void) readStringFromFileWithCompletion:(void (^)(BOOL success,NSString *output))completionBlock{
    
    
    dispatch_queue_t myQueue = dispatch_queue_create("FileReadingQueue",NULL);
    dispatch_async(myQueue, ^{
        // Perform long running process
        NSString *fileAtPath =  [self getLogFilePath];
        NSString *output = [[NSString alloc] initWithData:[NSData dataWithContentsOfFile:fileAtPath] encoding:NSUTF8StringEncoding];
    
        completionBlock(true,output);
    
    });
    

    }

    使用您的方法,

    [self readStringFromFileWithCompletion:^(BOOL success, NSString *output) {
        // use 'output' here, to get the string read from file
    }];