我想我在這裏有點困惑,我所擁有的是一個純文本文件,其中包含數字「5 10 2350」。正如你可以在下面看到的,我正在嘗試使用readDataOfLength讀取第一個值,我想也許在那裏我變得混亂的是,我應該閱讀爲字符,但是然後10是2個字符和2350是4。正確的方向來閱讀這些。從NSData讀取整數?
NSString *dataFile_IN = @"/Users/FGX/Documents/Xcode/syntax_FileIO/inData.txt";
NSFileHandle *inFile;
NSData *readBuffer;
int intBuffer;
int bufferSize = sizeof(int);
inFile = [NSFileHandle fileHandleForReadingAtPath:dataFile_IN];
if(inFile != nil) {
readBuffer = [inFile readDataOfLength:bufferSize];
[readBuffer getBytes: &intBuffer length: bufferSize];
NSLog(@"BUFFER: %d", intBuffer);
[inFile closeFile];
}
EDIT_001
從賈勒特和OLE兼具優良的答案,這裏是我已經用。最後一個問題「方法02」選擇回車到文本文件底部的空行,將其作爲一個子字符串返回,然後轉換爲「0」,我可以設置NSCharacterSet來停止它,目前我只是在字符串上添加了一個長度檢查。
NSInteger intFromFile;
NSScanner *scanner;
NSArray *subStrings;
NSString *eachString;
// METHOD 01 Output: 57 58 59
strBuffer = [NSString stringWithContentsOfFile:dataFile_IN encoding:NSUTF8StringEncoding error:&fileError];
scanner = [NSScanner scannerWithString:strBuffer];
while ([scanner scanInteger:&intFromFile]) NSLog(@"%d", intFromFile);
// METHOD 02 Output: 57 58 59 0
strBuffer = [NSString stringWithContentsOfFile:dataFile_IN encoding:NSUTF8StringEncoding error:&fileError];
subStrings = [strBuffer componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
for(eachString in subStrings) {
if ([eachString length] != 0) {
NSLog(@"{%@} %d", eachString, [eachString intValue]);
}
}
加里
嗯....我似乎無法重複方法02中的尾隨0只是換行...但是,如果我把一個非數字字符在最後。 – 2009-12-10 15:23:46
也許我的測試文件中隱藏着某些東西,我正在拾取。無論如何感謝您的反饋。 – fuzzygoat 2009-12-11 16:41:23