IOS,从app目录加载文件

时间:2015-08-12 08:57:36

标签: ios iphone uiviewcontroller nsfilemanager

我有app目录,我需要在某个地方放置一些文件才能在我的应用程序中使用它(免费书籍)。我应该使用哪个目录以及如何获取路径?

2 个答案:

答案 0 :(得分:1)

如果你在构建它时将它们包含在你的应用包中,你可以像这样获取它们的文件路径:

NSString* filePath = [[NSBundle mainBundle] pathForResource:@"myfile" ofType:@"pdf"];

如果您从服务器或其他地方下载它们,则应将它们放在文档目录中。这是这样得到的:

NSString *documentDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];

然后您只需将文件名附加到其中即可访问它:

NSString *filePath = [documentDir stringByAppendingPathComponent:@"myfile.pdf"];

如果您只想要App Bundle的目录和目录列表,您可以这样做:

NSString *appBundleFolderBath = [[NSBundle mainBundle] resourcePath];

NSFileManager *fileManager = [NSFileManager defaultManager];  
NSLog(@"App's Directory is: %@", appBundleFolderBath);
NSLog(@"Directory Contents:\n%@", [fileManager directoryContentsAtPath: appBundleFolderBath]);

答案 1 :(得分:0)

这可能对您有所帮助。通过使用它,您可以在应用程序数据中创建文件或从应用程序数据中获取文件。

  var paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! String
  var dirPath = paths.stringByAppendingPathComponent("XYZ/")

  var docPath = paths.stringByAppendingPathComponent("XYZ/xyz.json" )
  println(docPath)
  var checkImage = NSFileManager.defaultManager()

  if (checkImage.fileExistsAtPath(docPath)) {


} else
{
     checkImage.createDirectoryAtPath(dirPath, withIntermediateDirectories: true, attributes: nil, error: nil)

}

删除特定用途

 checkImage.removeItemAtPath(imagePath, error: nil)