无法使用stringWithContentsOfFile从文件中获取正确的数据
我一直在解决这个问题几个小时,但我仍然无法得到它的工作。我已经尝试了所有我在stackoverflow上找到的解决方案,但没有任何工作。下面是我的代码:无法使用stringWithContentsOfFile从文件中获取正确的数据
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
NSFileManager *fileManager;
NSString *currentPath;
NSString *content;
content = [[NSString alloc] init];
NSString *filename;
filename = @"/Tasty Noodle House.xlsx";
fileManager = [NSFileManager defaultManager];
currentPath = [fileManager currentDirectoryPath];
NSError* error;
content = [NSString stringWithContentsOfFile:[currentPath stringByAppendingString:filename] encoding:NSUTF16LittleEndianStringEncoding error:&error];
NSLog(@"current path: %@",currentPath);
NSLog(@"filecontent: %@",content);
NSLog(@"error: %@", error);
}
我已经检查的路径是正确的,该文件确实存在,在这条道路(currentPath)。但是,问题是,行NSLog(@“filecontent:%@”,内容);根本不打印出来。打印输出如下所示:
2016-01-23 11:30:11.367 ScaryBugsMac[1377:222946] current path: /Users/username/Library/Developer/Xcode/DerivedData/ScaryBugsMac-buobqwjccigdqthjejrzmgasnzyf/Build/Products/Debug
2016-01-23 11:30:11.367 ScaryBugsMac[1377:222946] error: (null)
根据我的经验,它应该打印出至少“filecontent:(空)”,但它是很奇怪的没有得到打印出来。
我也使用enconding尝试:NSUTF8StringEncoding,它给我的错误:其他
2016-01-23 11:32:44.708 ScaryBugsMac[1404:230157] current path: /Users/username/Library/Developer/Xcode/DerivedData/ScaryBugsMac-buobqwjccigdqthjejrzmgasnzyf/Build/Products/Debug
2016-01-23 11:32:44.708 ScaryBugsMac[1404:230157] filecontent: (null)
2016-01-23 11:32:44.709 ScaryBugsMac[1404:230157] error: Error Domain=NSCocoaErrorDomain Code=261 "The file “Tasty Noodle House.xlsx” couldn’t be opened using text encoding Unicode (UTF-8)." UserInfo=0x60000007a740 {NSFilePath=/Users/username/Library/Developer/Xcode/DerivedData/ScaryBugsMac-buobqwjccigdqthjejrzmgasnzyf/Build/Products/Debug/Tasty Noodle House.xlsx, NSStringEncoding=4}
两件事情:
我已经尝试了所有的编码和问题下降成上述两种情况之一。
我可以在我的Mac上使用Excel打开xlsx文件,没有任何问题。所以我不认为这个文件有什么问题。
我真的很感激任何帮助,谢谢!
更有可能的是,文件内容被压缩(IIRC,XLSX定义允许内容被直接压缩)。
或者在文件中有一些字符实际上导致它被认为是损坏的。
将它加载到NSString中可能没有那么有用。如果它被压缩,你需要首先解压缩它。如果它确实是一个XLSX文件,那么您至少需要使用XML阅读器来读取内容(并且更好的是,有些可能已经存在的可以读取所述文件内容的开源库)。
Excel .xlsx文件包含二进制数据。 .xlsx文件与软件包捆绑相似。
它不包含纯文本,因此它不能被编码为NSString
谢谢您的回答! –
谢谢!我将去查找和解析excel文件的开源工具objective-c –