2012-07-03 87 views
0

可能重复:
Read Text file Programmatically using Objective-C阅读从.txt文件 - 目标C

我使用的代码以下行::

- (void)sync:(NSString *)savedName{ 

NSLog(@"saved name is this :: %@", savedName); 

NSString *savedDir = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; 
NSString *saveFilePath = [savedDir stringByAppendingPathComponent:savedName]; 
saveFilePath = [saveFilePath stringByAppendingPathComponent:@"edit.txt"]; 

NSString *saveString = [NSString stringWithContentsOfFile:saveFilePath encoding:NSUTF8StringEncoding error:nil]; 

NSLog(@"saveString is :: %@ savedName : %@ savefilepath : %@", saveString, savedName, saveFilePath); 
} 

的内容edit.txt是:

= WWWW = 
[[Category:ssss]] 

我想要做的是从文件edit.txt中读取并将其内容存储在一个字符串中。但是,在NSLogging上,我得到nullsaveString

我在gdb以下输出::

splitView[838:f803] saveString is :: (null) savedName : xxxx savefilepath : /Users/xxxx/Library/Application Support/iPhone Simulator/5.1/Applications/D4B3A4CF-E7D0-4D25-B3D3A170A329/Documents/xxxx/edit.t‌​xt` 

有人可以帮助我理清错误?我无法弄清楚。感谢致敬。

+0

为什么你'savedName'参数空?你应该先检查一下。 – borrrden

+0

它不为空..它是'xxxx' – kamalbhai

+0

噢拍我混了up savedName和saveString nevermind – borrrden

回答

1

好是如下

NSString *path; 
path = [[NSBundle mainBundle] pathForResource: YOUR_TEXT_FILE_NAME ofType: @"txt"]; 

现在函数读取返回NSString作为返回对象的文件。 我在此函数调用是如下

NSString *data = [self readFile: path]]; 

现在的功能

-(NSString *)readFile:(NSString *)fileName 

{ 
    NSLog(@"readFile"); 

    NSString *appFile = fileName;  
    NSFileManager *fileManager=[NSFileManager defaultManager]; 
    if ([fileManager fileExistsAtPath:appFile])   
    { 
     NSError *error= NULL; 
     NSString *resultData = [NSString stringWithContentsOfFile: appFile encoding: NSUTF8StringEncoding error: &error]; 
     if (error == NULL)    
      return resultData; 
    } 
    return NULL; 
} 

希望这将帮助你

编码快乐:)

+0

我应该如何在这里定义我的路径?在我的代码中..我想我已经正确定义了我的路径。 – kamalbhai

+0

只是用这个从文件中读出不保存任何文件 –

+0

即只用于'NSString * saveString = [self readFile:path]];'其中'path'与上面给出的相同, 'YOUR_TEXT_FILE_NAME'' –

1

我认为你的TXT文件路径是错误的。检查了这一点,你正在构建的saveFilePath的方式,也许:

NSString *savedDir = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; 
NSString *saveFilePath = [savedDir stringByAppendingPathComponent:savedName]; 
saveFilePath = [saveFilePath stringByAppendingPathComponent:@"edit.txt"]; 
+0

哦对不起..我的坏..但仍然'saveString'出来是空!我编辑了我的问题。 – kamalbhai

1

如果欧尝试:

NSString *savedDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *saveFilePath = [savedDir stringByAppendingPathComponent:savedName]; 
//Why do you do that ? saveFilePath = [savedDir stringByAppendingPathComponent:@"edit.txt"]; 

NSString *saveString = [NSString stringWithContentsOfFile:saveFilePath encoding:NSUTF8StringEncoding error:nil]; 

NSLog(@"saveString is :: %@ savedName : %@ savefilepath : %@", saveString, savedName, saveFilePath); 
+0

我有超过1个。txt文件在'savedName'文件夹中。所以,我尝试使用我的.txt文件的特定名称。 – kamalbhai

+0

我也试过你的代码..它仍然是空的。但是,你能向我解释一下你的第一行吗? – kamalbhai

+0

当我读取您的代码时,我怀疑您要查看应用程序的Document目录。也许我错了,但如果不是,我的代码更常见于此目录。请打印所有路径(包含您的文件名)并向我们显示。 – Pierre

1

检查文档是否含有edit.txt文件。

编辑:

- (void)sync:(NSString *)savedName{ 

    NSString *filePath = [self applicationDocumentsDirectory]; 
    filePath = [filePath stringByAppendingPathComponent:@"license.txt"]; 
    NSString *saveString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]; 

    NSLog(@"saveString is :: %@ savedName : %@ savefilepath : %@", saveString, savedName, filePath); 
} 

LICENSE.TXT的路径是:/Users/nuzhat.zari/Library/Application支持/ iPhone模拟器/ 5.0 /应用/ 9BFCE2B5-C976-4EF6-91DF-DA4ABCD04788 /文档。

确保您的文件路径也与此类似。那么我用来读取.txt文件数据

+0

是的..它包含'.txt。文件 – kamalbhai

+0

你可以给你的edit.txt的路径? –

+0

我在我编辑的问题中发布了'path'作为'savefilePath'在我的'NSLog'返回中。 – kamalbhai