問題タブ [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 を使用してファイルの終わりをチェックする方法は?
ブロックを使用してNSFileHandle
(から) からデータを読み取っています。NSPipe
readabilityHandler
processData
これは正常に機能し、メソッドに供給されると予想されるすべてのデータを取得します。問題は、データの最後のチャンクがいつ読み取られたかを知る必要があることです。ファイルの終わりに達した場合availableData
は空のインスタンスを返す必要がありますが、問題は、EOF で到達可能性ハンドラーが再度呼び出されないことです。NSData
EOF で何らかの通知またはコールバックを取得する方法については何も見つかりません。それで、私は何が欠けていますか?Apple は本当に EOF コールバックなしで非同期読み取り API を提供していますか?
ちなみに、runloop が利用できないので、runloop ベースのreadInBackgroundAndNotify
方法は使用できません。これをNSFileHandle
API で動作させることができない場合は、おそらくディスパッチ ソースを直接使用して IO を実行します。
objective-c - NSFileHandleDataAvailableNotification ファイルが新しいデータなしで繰り返し発生する (CPU 使用率が非常に高くなる)
NSTask
を使用して Cocoaの a の標準エラーからデータを読み込もうとしていますwaitForDataInBackgroundAndNotify
。次のコードはストリームを読み取るため、すでに部分的に機能しています。
私が抱えている問題は、新しいデータがまったくない状態で (毎秒数千回) が繰り返し発火し始めることがあることです( return NSFileHandleDataAvailableNotification
) 。その後、プロセスが大量の CPU を使用し始め、マシンの速度が低下して停止します。過去にこのようなことをしたことがある人はいますか?前もって感謝します。[data length]
0
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 です。
なぜこのようなエラーが発生するのかを理解するために、誰でも私を助けることができますか?
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 デリゲート メソッドは次のようになっています。
そのため、リクエストからのデータは保存されず、他のデータ オブジェクトに追加されません。これはディスクに書き込むだけで、メモリに影響を与えるべきではありませんか?
ありがとう
ios - NSFileHandle * から FILE * を取得するには?
古いパーサーは動作するために a に依存していFILE *
ます。ただし、Dropbox Sync API for iOS はファイル ハンドルとしてNSFileHandle *
ではなく を返します。FILE *
だから私は使用しようとしfileDescriptor
ますNSFileHandle
:
- (NSFileHandle )readHandle:(DBError * )エラー
ファイルの読み取り専用ファイル ハンドルを返します。ファイルがキャッシュされていない場合、メソッドはファイルがダウンロードされるまでブロックされます。戻り値
ファイルを読み取ることができる場合はファイル ハンドル、エラーが発生した場合は nil。
として渡されますFILE *
:
ただし、EXE_BAD_ACCESS
アットザfseek
ラインがあります。
ios - NSFileHandle を使用してテキスト ファイルにデータを挿入する方法
私のコードは、5 記号から始まるテキストを挿入するのではなく、テキストを置き換えます。
テキストファイルにデータを挿入する方法はありますか?