問題タブ [fseek]
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.
winapi - 大きなファイルへの高速アクセス - fseek ftell fsetpos fgetpos
私は、ギガバイトのファイル内の選択されたデータへのある種の迅速なアクセスを提供することに直面しています。開始点を見つけると、その後のアクセスはシーケンシャルになります。ファイルには、各レコードの先頭に日付が含まれており、日付はファイル全体で増加します。最初から読み始めて、先頭の内容を無視してファイルを読みたくないのです。私は WINDOWS アプリケーションにのみ興味があります。ファイルをテキストモードで開きたいです。
64 ビットの fseek/ftell または fsetpos/fgetpos 関数を使用して、ある種のバイナリ検索を実行できることを思いつきました。改行で区切られたレコードの途中までシークする可能性があることは理解していますが、fgets 呼び出しを使用して部分的なレコードを単純にスキップできると考える人もいるでしょう。
fseek は元の SEEK_END メカニズムを提供するため、ファイル サイズを決定するために ftell を使用できるようです。fsetpos/fgetpos に同様の機能はありません。fsetpos/fgetpos を使用した場合、ファイル サイズを取得するにはどうすればよいでしょうか。
_fseeki64/_ftelli64 は int64 を使用し、fsetpos/fgetpos で使用される fpos_t も int64 であるため、ポインターに対して演算を実行できるはずです。
それとも、ここで間違った軌道に乗っていますか? 他のアプローチを検討する必要がありますか?
php - fseek を使用して最後の行の前に文字列を挿入する
blueimp.net の AjaxChat 用の非常に基本的な登録モジュールを作成しようとしています。ユーザー構成ファイルに書き込むスクリプトがあります。
$addUser
しかし、最後の行の前に挿入する必要があります。?>
fseekを使用してこれを達成するにはどうすればよいですか?
c - Cのバイナリファイルの特定のポイントに移動し(fseekを使用)、その場所から読み取ります(freadを使用)
これが私の問題を解決するための最良の方法であるかどうか疑問に思っています。
必要な情報が保持されているバイナリファイルの特定のオフセットの値を知っています...私がやりたいのは、オフセットにジャンプして、その場所から開始して特定のバイト数を読み取ることです。
グーグルを使用した後、私の最善の策は、fseek()を使用してオフセットの位置に移動し、次にfread()を使用してその位置からバイト数を読み取ることであるという結論に達しました。
私はこれを考えるのは正しいですか?もしそうなら、どのようにそうするのが最善ですか?つまり、2つを一緒に組み込む方法。
私が正しくない場合、代わりに何を提案しますか?
よろしくお願いします。
マット
編集:
fread()のチュートリアルに従い、次のように調整しました。
そこで、ファイル'comm_array2.img'を使用して、ファイルから最初の10文字を読み取りました。
しかし、私が理解していることから、これはファイルの先頭から始まります。ファイル内のある場所(オフセット)から行きたいです。
これはもっと理にかなっていますか?
編集番号2:
私は少しぼんやりしていたようです、そして必要なのは(私の試みからはそう思われるでしょう)上記のコードにあるfread()の前にfseek()を置くことだけです、そしてそれはその場所を探します次に、そこから読み取ります。
c++ - ファイル内の場所をすばやくシークする
大量の数字を含むファイルがあり、各数字はスペースで区切られています。
そのような: 124 1212 5 654 74231 ...
このファイルの N 番目の番号をすばやく見つけるにはどうすればよいですか?
fseek()
バイト単位で測定されるため、機能しない可能性があると思います。次の方法でN番目の数値を取得できます。
しかし、もっと効率的な方法があるのではないでしょうか?
c - 既存のファイルに基づいてファイル バッファのサイズを malloc します
私のプロジェクトでは、共有ファイルを共有というディレクトリにコピーする必要があります。私の考えは、このファイルの内容を fgets と fputs を使用してコピーすることです。
ただし、ファイル バッファーを不適切に割り当てることはできません。このファイル バッファーのサイズは常に 4 です。
更新:誤解があるようです。ファイルバッファに何かが保存されているかどうかを確認するためだけの場合は、 sizeof() 。strlen(fileBuff) を試してみると、常に 1 になります。
c - Cプログラムを使用して現在の位置でキャラクターを取得するにはどうすればよいですか?
いくつかのバイトでオフセットされているファイル内の文字を取得するためのCプログラムを作成しようとしています。たとえば、次のように3つとします。
その特定のバイトが表す文字を印刷したいと思います。たとえば、ファイルに次のようなものが含まれている場合、3文字ごとに印刷する必要があります。
問題は、while
ループを使用した後、目的の結果を印刷できないことです。印刷される最初の文字は、3番目ではなく4番目の文字です。
これの間違いを理解するのを手伝ってくれませんか。ありがとう!
php - PHP ファイル ハンドラーが正しく動作しないのはなぜですか?
「test.txt」ファイルに次のコンテンツがあります: lucas
ファイル内のポインターをシークし、先に情報をオーバーライドしたい。私がすることを仮定:
これにより、 oneasが生成されますが、実行結果はlucasone です。
私はコード ロジックに夢中ですか、それとも動作しませんか?
私がやりたいことをする正しい方法はどうですか?
c++ - ファイルが "a" (追加) モードで開かれている場合、fseek が機能しない
正常に返されます: "someteis a"
しかし
動作しません。「sometextis a」を返します
理由はありますか?2番目のコードが最初のコードとまったく同じように出力されるようにするための解決策は何ですか?
php - PHP: ファイル内の特定のポイントから読み取る
類似: PHP でテキスト ファイルの最後の 5 行のみを読み取る方法は?
大きなログ ファイルがあり、ファイル内の位置 X から 100 行を表示できるようにしたいと考えています。ログファイルが大きすぎるためfseek
ではなく、使用する必要があります。file()
同様の機能がありますが、ファイルの最後からしか読み取れません。開始位置も指定できるように変更するにはどうすればよいですか? また、ファイルの最後から開始する必要があります。
私がやろうとしているのは、ファイルの最後から開始して 100 行を表示する Web ベースのログ ビューアーを作成することです。[次へ] ボタンを押すと、その前の次の 100 行が表示されます。