問題タブ [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.
ios - ファイルが存在しなくなったときに NSFileHandle が例外をスローしないのはなぜですか
私は NSFileHandle の fileHandleForWritingAtPath を使用して、ファイルへのハンドルを開き、ファイルに書き込みます (末尾に追加します)。私は常にそれに書き込む必要があるため、ハンドルを閉じたり、書き込み時にそこにあることを確認したりすることはありません。
なんらかの理由でサードパーティがファイルを削除した場合、つまり、存在しないファイルに有効なハンドルを持っている場合をサポートする必要があります (カーネルはハンドルが悪いことを認識している必要があります)。これを予期して、writeData への呼び出しをラップします。try キャッチを使用して、メソッドが例外をスローすることを期待しています (なぜ void を返し、書き込まれていないバイトが私を超えているのか)。
そうではありません。なんで?
ios - リモートURLからデバイスにビデオをダウンロードし、AVPlayer経由でストリーミングする
私が現在行っているのは、MP4ファイルを含むリモートURLがあるということです。NSDataとNSFileManagerを使用してファイルにダウンロードします(ファイルをキャッシュしたいので)。ここで、AVPlayerを使用してファイルの再生を開始します。
これはすべて機能します。ただし、問題は、ビデオが数秒後にバッファリングされると、再生を再開できないことです。
ノート:
AVPlayerの状態は一時停止に変わりません。
ビデオが停止した場合でも、ビデオの現在の時刻は引き続き実行されます。
とにかく、バッファが発生する前にビデオを一時停止できますか?前もって感謝します。
objective-c - 標準出力に設定された NSFileHandle で NSTask を終了する
インスタンスを作成して実行するコードのバッチがありNSTask
ます。実行する前に、タスクの標準出力用に、NSFileHandle
作成したファイルにウィッチが直接書き込みます。
NSTask は、terminate
完了する前にコードによって (コマンドを送信することによって) 終了されることもあれば、外部で終了することなく完了することもあります。
NSTask が正常に完了すると、出力が書き込まれるようにセットアップしたファイルは、本来あるべきとおり、テキストでいっぱいになります。ただし、コードでタスクを終了すると、NSTask が出力を生成しているという事実を知っていても、ファイルには何もありません。
これが私のコードです:
このメソッドは、コマンドによって生成されたデータをファイルに書き込むと考えていました。それが本当なら、コマンドが強制終了された場合でも、ファイルには何らかの情報が含まれているはずです。では、なぜそうではないのでしょうか。
私が間違っていて、これが生成されたときに出力を保存しない場合に備えて、それを行う方法を教えてもらえますか?
objective-c - 大きなファイルと小さなファイルのNSFileHandleの作成にパフォーマンスの違いはありますか?
この質問は私にはほとんどばかげているように思われますが、私は自分自身を健全性チェックしたいと思っています。さまざまな理由から、iOSアプリのリソースとしてこれをパックする前に、多数のファイルを1つのメガファイルにまとめています。次に、NSFileHandleを使用してファイルを開き、適切な場所を探して、必要なバイトだけを読み取ります。
この方法で行うことと、緩いファイルを読み取ることの間にパフォーマンスの違いはありますか?または、たとえば10個の中型(ただしまだ結合されている)ファイルに対して、1つのモノリシックメガファイルのみを使用することを選択できるとすると、大きなファイルと小さなファイルを「開く」間にパフォーマンスの違いはありますか?
どこを探すべきかを正確に知っており、必要なバイトだけを読んでいるので、どのように違いがあるのかわかりません。しかし、ねえ-ストレンジャー・シングスはそうであることが証明されています。前もって感謝します!
ios - NSFIleHandle 処理で EPIPE をキャッチするにはどうすればよいですか?
iOS アプリの EPIPE に問題があり、@try/@catch/@finally ブロックでキャッチされません。どうすればこのシグナルをキャッチできますか (SIGPIPE の可能性が高い)...
特定の種類の URL を処理する「Web プロキシ」をアプリに組み込みました。このエラーの場合、リモート エンド (これもアプリ内ですが、iOS ライブラリに隠れています) がソケットの終端を閉じているようです。 . 通知が届きません (すべきですか? ここで役立つかもしれない NSFileHandle に登録する必要があるものはありますか?)。
このプロキシは、Matt Gallagher がまとめた HTTPServer (ここからHTTPRequestHandler
入手可能) に基づいています。問題は、彼がまとめたクラスのサブクラスにあります。コードは次のとおりです (このコードはstartResponse
、基本クラスのメソッドに相当します)。
クラッシュしたときにコンソール ログに表示される内容は次のとおりです。
もう一方の端がパイプを閉じたためにwrite()
失敗したようです。そのため、誰かがパイプが既に閉じられていることを発見してデータを書き込もうとしない方法を教えてくれれば、私のプログラムをクラッシュさせないようにすることができます。役に立った。
ios - 別のアプリから取得したファイルをNSFileHandleする方法
現在、別のアプリからオープニングファイルを実装しようとしています。サードパーティのアプリ(ドキュメントなど)にアクセスしてアプリでファイルを開くと、NSFileHandleでファイルを開くことができないようです。
AppDelegatesメソッドが呼び出された後:
私はこのようなURLを取得します:
file://localhost/private
NSBunbleパスのように見せるために手動で削除しようとしましたが、うまくいきません...
NSFileHandleでそのデリゲートメソッドから取得したURLを開く簡単な方法はありますか?
objective-c - 16 進数を含む NSString を同等の ASCII に変換
次のような16進情報を持つNSStringがあります
これは NSData から来ました。私がする必要があるのは、Hex データの NSString を次のような Ascii に変換することです。
お分かりのように、これは M4A ファイルです。NSFileHandle を使用して、ファイルの最初の部分を NSData にロードしました。次に、それを NSString に保存しました。
NSData を直接変換する方法、または NSString を ascii に変換する方法を知っている人はいますか? ありがとう!
python - Python: ファイル ハンドラーの問題: .nsf ファイルを残さずにファイルを削除する
Pythonプログラムでロギングを処理する次の方法があります
これは大規模なデータ収集コード ベースであり、リモート サーバーでのクォータの制約を回避するために、次の gzip および tar 手順を実装しました。
ネストされた for ループでデータ収集プロセスを実行し、次のようにロガーを呼び出します。
すべて正常に動作しますが、実行されると、ファイル .nsf ファイルを削除した後、残りのファイルが残り、クォータの問題がそのまま残ります。
そのため、次のコード セグメントを追加してログ ファイル ハンドラを閉じましたが、これで次のエラーが発生します。
ログ ファイルを閉じるコード:
上記のコードは、私にこのエラーを与えてしまいます:
これは、ハンドラーのコード セグメントを閉じると、main メソッドがどのように見えるかです。
私は何を間違っていますか?ロガーの扱いが間違っていますか?または、ファイルを閉じるのが早すぎますか?
cluster-computing - リモート クラスタでの古い NFS ファイル ハンドルの問題
ngspiceというツールを使用して一連のシミュレーションを実行する必要があります。100万回のシミュレーションを実行したいので、それらをマシンのクラスター (マスター + 開始するスレーブ、それぞれ 12 コア) に分散しています。
コマンドは次のとおり
ngspice deck_1.sp
です。ngspice deck_2.sp
等。、
ステップ 1: Python スクリプトを使用して、これらの sp ファイルを生成します。
ステップ 2: Python はGNU 並列を呼び出してマスター/スレーブ全体に sp ファイルを配布し、ngspice を使用してシミュレーションを実行します
ステップ 3: 結果を後処理します (Python スクリプト)。
ディスク容量を節約するために、一度に 1000 個のファイルのみを生成して処理します。したがって、100 万個のファイルがシミュレートされるまで、上記のステップ 1 から 3 がループで繰り返されます。
今、私の問題は次のとおりです。
初めてループを実行するときは問題ありません。1000 回のシミュレーションが完了するまで、ファイルはマスター/スレーブ全体に分散されます。ループが 2 回目に始まると、既存の sp ファイルを消去して再生成します (ステップ 1)。ここで、ステップ 2 を実行すると、奇妙な理由でいくつかのファイルが検出されません。いくつかのデバッグの後、ステップ1で作成された特定のspファイルに対して、「古いNFSファイルハンドル」および「そのようなファイルまたはディレクトリdeck_21.spはありません」などのエラーが表示されます。
Python スクリプトを一時停止ls
し、ディレクトリで ' ' を実行したところ、ファイルが実際に存在することがわかりましたが、エラーが指摘しているように、古い NFS ファイル ハンドルが原因です。このリンクでは、クライアントなどを再マウントすることをお勧めしますが、マウントする管理者権限がないマシンにログインしています。これを解決する方法はありますか?
ありがとう!