2010-04-25 91 views
5

我有下面这段代码:阅读文本文件 - iPhone SDK

NSString *fileName = [[NSUserDefaults standardUserDefaults] objectForKey:@"recentDownload"]; 
    NSString *fullPath = [NSBundle pathForResource:fileName ofType:@"txt" inDirectory:[NSHomeDirectory() stringByAppendingString:@"/Documents/"]]; 
    NSError *error = nil; 

    [textViewerDownload setText:[NSString stringWithContentsOfFile:fullPath encoding: NSUTF8StringEncoding error:&error]]; 
  • textviewerdownload是显示该文件中的文本textview。实际的文件名称存储在名为recentDownloadNSUserDefault中。

  • 当我建立这个,我点击这是button,这是我的申请crashes

  • 有没有什么语法错误或只是简单的错误?

+0

如果语法有问题,您的代码将无法编译;你将无法进入运行阶段并看到它崩溃。要调试崩溃,请使用调试器;它应该告诉你你是如何坠毁和在哪里。 – 2010-04-26 05:49:40

回答

9

NSBundle类用于您的应用程序包内找到的东西,但文件目录是包外,所以这样你正在生成的路径将无法正常工作。试试这个:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                NSUserDomainMask, 
                YES); 

NSString *fullPath = [[paths lastObject] stringByAppendingPathComponent:@"recentDownload.txt"]; 
+0

好的,我改变了一些编码..我的应用程序仍然崩溃..这是我的IBAction下的代码:http://www.heliotop.org/code.rtf 另外我将如何做if语句,其中如果最近的文件不是扩展名为“txt”的文件,它会返回,如果是则导致操作。 – lab12 2010-04-25 21:07:49

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

    NSString *myPathDocs = [documentsDirectory stringByAppendingPathComponent:@"myfile.txt"]; 

    if (![[NSFileManager defaultManager] fileExistsAtPath:myPathDocs]) 
    { 
     NSString *myPathInfo = [[NSBundle mainBundle] pathForResource:@"myfile" ofType:@"txt"]; 
     NSFileManager *fileManager = [NSFileManager defaultManager]; 
     [fileManager copyItemAtPath:myPathInfo toPath:myPathDocs error:NULL]; 
    }  

    //Load from File 
NSString *myString = [[NSString alloc] initWithContentsOfFile:myPathDocs encoding:NSUTF8StringEncoding error:NULL]; 

这为我工作

不管怎么说,谢谢大家..

2

对于读/从文本文件检查这个url写。

+0

确保在您的info.plist中将布尔标志“UIFileSharingEnabled”设置为“YES”。 – msgambel 2012-03-31 22:47:40