当我调用readDataOfLength:实例时NSFileHandle,是否需要释放返回的NSData?目前我还没有,但我想摆脱这个挥之不去的疑虑。
我正在尝试查找文件大小.
NSFileHandle *output = [NSFileHandle fileHandleForWritingAtPath:self.finalPath];
//seek to begin of the file
[output seekToFileOffset:0];
NSData *mydata = [output availableData];
NSLog(@"length: %d", [mydata length]);
Run Code Online (Sandbox Code Playgroud)
但我的长度是零到零.为什么?
我有一个使用 打印到 stdout 的 C 函数fprintf,并且我试图在UIAlertView. 我的代码如下:
NSFileHandle *stdoutFileHandle = [NSFileHandle fileHandleWithStandardOutput];
NSData *stdoutData = [stdoutFileHandle availableData];
NSString *stdoutString = [[NSString alloc] initWithData:stdoutData encoding:NSASCIIStringEncoding];
UIAlertView *stdoutAlert = [[UIAlertView alloc] initWithTitle:@"STDOUT OUTPUT" message:stdoutString delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[stdoutAlert show];
Run Code Online (Sandbox Code Playgroud)
当我运行我的代码时,出现以下错误。
由于未捕获的异常“NSFileHandleOperationException”而终止应用程序,原因:“[NSConcreteFileHandle availableData]:错误的文件描述符”
[stdoutFileHandle availableData]当我替换为时,我收到了等效的错误[stdoutFileHandle readDataToEndOfFile]。
我曾经在java中进行编码,但现在我想使用swift 2将我的应用程序移动到iOS.所以我想要一种方法将新行中的文本附加到app文档中的现有txt文件中.
我搜索并尝试了很多方法,但它全部覆盖到新的txt文件
在java中我使用了这个方法
PrintWriter out=null;
try {
out=new PrintWriter(new FileWriter("file.txt",true));
out.println("some txt"}
out.close();
} catch (IOException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud) 我需要从Internet下载大文件,并将其保存到本地磁盘.
首先,我保存这样的数据:
- (void)saveToLocalFile:(NSData *)data withOffset:(unsigned long long)offset{
NSString* localFile = [self tempLocalFile];
dispatch_async(mFileOperationQueue_, ^{
NSFileHandle* fileHandle = [NSFileHandle fileHandleForWritingAtPath:localFile];
if (fileHandle == nil) {
[data writeToFile:localFile atomically:YES];
return;
}
else {
[fileHandle seekToFileOffset:offset];
[fileHandle writeData:data];
[fileHandle closeFile];
}
});
}
Run Code Online (Sandbox Code Playgroud)
由于AFNetworking使用NSOutputstream将数据保存到本地是这样的:
NSUInteger length = [data length];
while (YES) {
NSInteger totalNumberOfBytesWritten = 0;
if ([self.outputStream hasSpaceAvailable]) {
const uint8_t *dataBuffer = (uint8_t *)[data bytes];
NSInteger numberOfBytesWritten = 0;
while (totalNumberOfBytesWritten < (NSInteger)length) {
numberOfBytesWritten = …Run Code Online (Sandbox Code Playgroud)