【问题标题】:iOS: read html files from document directoryiOS:从文档目录中读取 html 文件
【发布时间】:2014-06-07 23:19:15
【问题描述】:

我在文档目录中有book 文件夹。在这个文件夹中有很多html文件,css和js。我希望从这个文件夹中一个一个地读取每个 html 文件。

如何按特定顺序从文档目录中读取每个 html 文件 - 每个 html 页面代表书的每个页面。

这是我到目前为止所做的:

- (IBAction)btnRead_click:(id)sender {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSArray *filePathsArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:nil];

    NSLog(@"files array %@", filePathsArray);
}

我该怎么做?

【问题讨论】:

  • 您是否尝试使用 PageViewController 与 UIWebView 结合?
  • 如果你已经枚举了文件夹的内容,你可以按名称对数组进行排序
  • @Bigood - 实际上我必须使用滑动手势识别器自己进行分页。我只想知道如何从 doc 目录中的文件夹中读取每个 html 页面。
  • contentsOfDirectoryAtPath 接受 NSURL 而不是 NSString...
  • 你知道文件名和加载顺序吗?

标签: html ios nsdocumentdirectory


【解决方案1】:

通过以下方式读取文件:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
     NSString *documentsDirectory = [paths objectAtIndex:0];
     NSString *bookDirectoryPath = [documentsDirectory stringByAppendingPathComponent:@"book"];

    NSArray *fileNamesArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:bookDirectoryPath error:nil];

     for(NSString *fileName in fileNamesArray)
     {
          if([[fileName pathExtension] isEqualToString:@"html"])
          {
               NSError *err = nil;
               NSString *fileNamePath = [bookDirectoryPath stringByAppendingPathComponent:fileName];
               NSString *htmlContent = [NSString stringWithContentsOfFile:fileNamePath
                                                                 encoding:NSUTF8StringEncoding
                                                                    error:&err];
               NSLog(@"%@",htmlContent);
          }
     }

【讨论】:

  • css 仍然没有被加载。如何加载html文件的所有css和js文件?
  • 为您的 HTML 文件提供正确的路径。它们应该与 HTML 文件的位置相对。
  • 路径是正确给出的,因为当我在浏览器中运行 html 页面时,css 和 js 被完美呈现。还有其他问题吗?
【解决方案2】:

试试这个,

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *finalPath = [[documentsDirectory stringByAppendingPathComponent:fileName];

    if ([[NSFileManager defaultManager] fileExistsAtPath:finalPath]==NO)
    {
       NSLog(@"File Not Found");

    }
    else
    {
        NSData *htmlData = [NSData dataWithContentsOfFile:finalPath];
        [webView loadData:htmlData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL fileURLWithPath:documentsDirectory isDirectory:YES]];
    }

如果您在文档目录中有任何 css,此代码也将起作用。我还建议您将 UIPageController 与 viewcontroller 和 webview 一起使用。

【讨论】:

  • 在 UIPageController 中有委托方法,您可以在其中处理加载到 uiwebview 中的 html 页面。此外,如果您使用 UIPageController,请确保重用您添加到其中的 UIViewController,否则应用程序可能会因内存而崩溃。
  • 嘿我也试过你的代码,但 css 仍然没有被加载。如何加载html文件的所有css和js文件?
  • 是的,css文件夹在book文件夹中,在文档目录中
  • 在这种情况下试试这个,[webView loadData:htmlData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL fileURLWithPath:[documentsDirectory stringByAppendingPathComponent:@"book"] isDirectory:YES]];
猜你喜欢
  • 2015-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-08
  • 2011-09-26
  • 2013-10-25
  • 2015-10-20
  • 2014-07-09
相关资源
最近更新 更多