问题标签 [nsfilehandle]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - 如何使用 NSFileHandle 的 readabilityHandler 检查文件结尾?
我正在使用块从 a NSFileHandle
(来自 a )读取数据:NSPipe
readabilityHandler
这很好用,我得到了我期望提供给我的processData
方法的所有数据。问题是我需要知道读取最后一块数据的时间。availableData
如果它到达文件末尾,则应该返回一个空NSData
实例,但问题是在 EOF 上不会再次调用可达性处理程序。
我找不到任何关于如何在 EOF 上获得某种通知或回调的信息。那么我错过了什么?Apple 真的提供了没有 EOF 回调的异步读取 API 吗?
顺便说一句,我不能使用基于 runloop 的readInBackgroundAndNotify
方法,因为我没有可用的 runloop。如果我不能让它与NSFileHandle
API 一起工作,我可能会直接使用调度源来执行 IO。
objective-c - NSFileHandleDataAvailableNotification 文件重复没有新数据(导致非常高的 CPU 使用率)
我正在尝试NSTask
使用waitForDataInBackgroundAndNotify
. 以下代码确实读取了流,因此它已经部分工作了。
我遇到的问题是,有时NSFileHandleDataAvailableNotification
开始重复触发(每秒数千次)而根本没有新数据([data length]
返回0
)。然后我的进程开始使用大量 CPU,使机器停止运行。你们有没有人在过去遇到过这样的事情?提前致谢。
ios - NSSearchPathForDirectoriesInDomains NSUserDomainMask
使用 URLConnection 我正在从 url 下载文件并将该数据存储到文件目录中的文件中。当我收到响应时,当调用 didReceiveResponse: 方法时,我创建文件并以这种方式移动到该文件的末尾:
其中 File 是 NSFileHandle 类的对象。稍后在接收数据时,每当调用 didReceiveData:(NSData *)data 方法时,我都会以这种方式将接收到的数据存储到文件中:
最后,我以这种方式关闭 connectionDidFinishLoading: 方法中的文件:
当我在我的系统中构建和运行时它正在工作。但是当我复制到另一个系统并尝试构建时,我得到了这个错误:
我参考了http://www.techotopia.com/index.php/Working_with_Directories_on_iPhone_OS和 什么是 NSSearchPathForDirectoriesInDomains?了解 NSSearchPathForDirectoriesInDomain 功能,但我仍然不清楚。
将UserDomainMask
根据项目所在的系统和用户返回正确的路径。如果是这样,为什么我会收到这样的错误?
他们说返回的路径(存储在文件路径中)将是路径 /Users//Library/Application Support/iPhone Simulator/User/Application//Documents 其中
是当前登录到运行模拟器的 Mac OS X 系统的用户的名称,并且是应用程序的唯一 ID
谁能帮助我,了解为什么我会收到这样的错误。
objective-c - 运行 NSUserUnixTask 时出现异常`-[NSConcreteFileHandle readDataOfLength:]: Bad file descriptor`
我用来在我的沙盒应用程序上NSUserUnixTask
运行未沙NSTask
盒。但是,我的代码挂在对[NSFileHandle readDataToEndOfFile]
. 如果我删除这些调用,它会完美运行。如果我用它替换[NSFileHandle readDataToEndOfFile]
它[NSFileHandle availableData]
也会挂起。
这是代码:
Xcode 的控制台上没有记录任何内容,但是如果我打开 Console.app,我会看到这一行:
嗯,我该如何解决这个问题?在我将我的应用程序沙盒化之前,我将NSPipe
其与 结合使用NSTask
并且一切正常,但现在NSUserUnixTask
需要使用NSFileHandle
代替,我认为我的问题仅仅是因为我没有正确使用它。但我仍然不知道我做错了什么。
ios - NSFileHandle writeData:异常处理
这可能是一个相当广泛的问题,但我找不到任何在线资源来解决或解释这个问题。
问题是在创建之后NSFileHandle *writer = [NSFileHandle fileHandleForWritingAtPath:"path"]
,当您使用时[writer writedata:"NSData"]
,根据苹果文档可能会触发正弦异常。
“如果文件描述符已关闭或无效,如果接收方表示未连接的管道或套接字端点,如果文件系统上没有剩余空间,或者发生任何其他写入错误,则此方法会引发异常。” - 苹果文档
我只想知道是否有任何方法可以处理或验证这些问题,而无需使用任何 try catch 或在写入前检查条件检查中的每个错误。我们可以用什么方法NSError
来处理这个问题?
ios - iOS:用于大文件下载的 NSFileHandle 与 NSOutputStream
在 iOS 上,我们的应用程序正在下载一个大约 400MB 的 zip 文件。下载文件时,我们遇到了间歇性崩溃。
目前我正在使用 [NSFileHandle writeData:] 来写入数据,而不是存储在内存中。但我想知道操作系统是否以某种方式将其存储在内存中?
NSOutputStream 会是下载大文件的更好解决方案吗?或者可能是标准的unix文件描述符?
我们的文件句柄是这样设置的:
目前我的 NSURLConnection 委托方法如下所示:
因此,来自请求的数据不会存储或附加到任何其他数据对象。这不应该只是写入磁盘而不影响内存吗?
谢谢
cocoa - 如何使用 NSFileHandle 获取文件的创建、修改日期和文件类型?
如何使用 NSFileHandle 获取文件的创建、修改日期和文件类型?请帮我解决这个问题。我尝试使用 NSDate,但没有找到解决方案。
objective-c - 在 Cordova 插件中使用相同的 NSFileHandle 对象时的 EXC_BAD_ACCESS
我在我的 Cordova 插件中遇到了访问问题:我NSFileHandle
在 Cordova 调用之间“丢失”了上下文,我最终得到了EXC_BAD_ACCESS、SIGABRT或Unrecognized Selector sent to instance错误。在 Obj-C 的文档中进行调试和挖掘并没有给我任何线索,因此非常感谢您的帮助!
这是我的代码。首先 - 界面:
和实施:
我打电话startWriting
,然后stopWriting
使用cordova.exec
. 错误发生在最后一行stopWriting
。有几次问题奇迹般地消失了,但在大多数情况下,我遇到了上述错误之一。
似乎我的logFile
对象无缝关闭了文件,但根据 iOS 文档,这通常发生在NSFileHandle
对象被释放时,而我的对象被声明为static,并且只要我的插件存在(另外,我在 XCode 调试器中看到它仍然被分配)。
在您看来,是什么导致我的NSFileHandle
对象“丢失”了实际文件?
ios - 如何从 NSFileHandle * 获取 FILE *?
旧的解析器依赖于 aFILE *
来工作。但是,适用于 iOS 的 Dropbox Sync API 返回 aNSFileHandle *
而不是 aFILE *
作为文件句柄。
所以我尝试fileDescriptor
使用NSFileHandle
:
- (NSFileHandle )readHandle:(DBError * )error
返回文件的只读文件句柄。如果文件未缓存,则该方法将阻塞,直到文件被下载。退货
如果文件可以读取,则为文件句柄,如果发生错误,则为 nil。
并作为FILE *
:
但是,有一个EXE_BAD_ACCESS
在线fseek
。
ios - 如何使用 NSFileHandle 将数据插入文本文件
我的代码替换文本而不是从 5 符号开始插入:
有没有办法将数据插入文本文件?