簡體   English   中英

如何使用NSFileHandle從文件中讀取整數

[英]How to use NSFileHandle to read integer from file

我想從文本文件中讀取整數列表,我只想編寫類似

int temp;
fin>>temp;

但是,當我閱讀可可文檔時,發現建議使用NSFileHandle ,並且沒有像我假設的方法那樣,只有一種相關方法:

- (NSData *)readDataOfLength:(NSUInteger)length

在目標C中是否有任何班級/方法可以幫助我做到這一點? 謝謝。

我想從文本文件中讀取整數列表,我只想編寫類似

溫度 鰭>>溫度;

您有許多文件訪問選擇。 如果要使用C ++樣式的訪問,可以,但是自然需要使用適當的C ++文件或流方法打開文件。 但是,如果使用Objective-C ++,則可以輕松地將C ++代碼混合到Objective-C中。

您還可以使用C標准庫文件例程,例如fopen(),fread()等。

如果文件來自程序以外的其他來源,則使用C或C ++讀取文件通常是一個不錯的選擇,這超出了您的控制范圍。

但是,當我閱讀可可文檔時,發現建議使用NSFileHandle,並且沒有像我假設的方法那樣,只有一種相關方法:

同樣,有很多選擇。 是的,您可以使用NSFileHandle將文件中的字節讀取到NSData對象中,然后可以從數據對象中獲取字節范圍。 不過,更常見的寫和讀數據方式是使用NSKeyedArchiver和NSKeyedUnarchiver:

NSData *data = [NSData dataWithContentsOfFile:pathToFile];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
int age = [unarchiver decodeIntForKey:@"Age"];
int weight = [unarchiver decodeIntForKey:@"Weight"];
NSString *name = [unarchiver decodeObjectForKey:@"Name"];

不過,那只是冰山一角。 與您要查找的代碼相比,它看起來像很多代碼,但工作量也要少得多。 因為可以存儲和讀取對象及其關系,所以您只需很少的代碼即可讀取復雜的對象圖:

OrgChart *chart = [NSUnarchiver unarchiveObjectWithFile:pathToFile];

另一個選擇是使用屬性列表,該屬性列表非常易於使用,但是在可以使用的數據類型中受到限制。

如果您想了解更多有關這些主題的信息,請閱讀《 歸檔和序列化編程指南》 ,《 屬性列表編程指南》和《 文件系統編程指南》

您可以像以前一樣使用Objective-C ++和iostream。

您可以使用CI / O功能,例如fopen和fscanf。 (可能是我會做的。)

Apple提供了NSScanner進行解析,但它僅從字符串讀取,而不從輸入流讀取。 如果您真的想使用它,則首先必須將整個文件(或大塊)讀入NSString(或NSData,然后將其轉換為NSString)。

如果您可以要求文本文件為JSON格式,則可以一口氣讀取它,然后使用NSJSONSerialization對其進行解析。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM