NSTask *task = [[NSTask alloc] init];
NSPipe *outPipe = [NSPipe pipe];
NSData *inData = nil;
NSFileHandle *readHandle = [outPipe fileHandleForReading];
[task setLaunchPath:@"/bin/cat"];
NSString *dirPath = [[[NSBundle mainBundle] pathForResource:@"test" ofType:@"txt"] stringByDeletingLastPathComponent];
[task setCurrentDirectoryPath:dirPath];
[task setArguments:[NSArray arrayWithObject:@"test.txt"]];
[task setStandardOutput:outPipe];
[task launch];
//[task waitUntilExit];
//NSMutableString *result = [[NSMutableString alloc] init];
while ((inData = [readHandle availableData]) && [inData length]) {
NSString *tempString = [[NSString alloc] initWithData:inData encoding:NSASCIIStringEncoding];
[outputView insertText:tempString];
}
//NSString *result = [[NSString alloc] initWithData:[[outPipe fileHandleForReading] readDataToEndOfFile] encoding:NSASCIIStringEncoding];
//[outputView insertText:result];
Returns the data available through the receiver up to the end of file or maximum number of bytes.
- (NSData *)readDataToEndOfFile
The data available through the receiver up to UINT_MAX
bytes (the maximum value for unsigned integers) or, if a communications channel, until an end-of-file indicator is returned.
This method invokes readDataOfLength:
as part of its implementation.
NSFileHandle.h