問題タブ [randomaccessfile]
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.
java - ファイル内のいくつかのバイトを上書きする方法は?
を使用してファイルを作成しましjava.io.File
たFileInputStream & FileOutputStream
。ファイルのサイズを変更せずに、ファイル内の一部のバイトの値を (たとえば、バイト 15 から 35 に) 変更したいとします。RandomAccessFile
オブジェクトを作成しRandomAccessFile.seek
てから、バイト番号15に移動し、新しいバイトを書き込んでからファイルを閉じようとしました。ファイルのサイズが変更されました。このアプローチのどこが悪いのでしょうか? また、これを成功させるにはどうすればよいでしょうか?
java - JavaRandomAccessFileは最初から切り捨てられます
RandomAccessファイルを切り捨てて、最後のバイトを削除する方法を知っています。
また
しかし、最初のバイトが削除されるようにRandomAccessFileを切り捨てる方法はありますか?このファイルの内容を新しいファイルに書き込む必要はありません。グーグルで答えが見つかりませんでした。助けてください。前もって感謝します。
java - RandomAccessFileオブジェクトの初期化方法を変更すると、FileChannelのパフォーマンスが変わるのはなぜですか?
ディスク上のボトルネックがJavaに書き込むコードを書き直す可能性を調査しています。javadocは、以下の最初の2つのコードループが次の2つのループとは異なるパフォーマンスを示す理由を明確にしていません。
このコードを実行すると、次のようなものが生成されます。
ご覧のとおりc.force(true)
、少し遅くなります。RandomAccessFile
「rwd」モードを使用すると、速度がさらに低下するのはなぜですか。「rwd」であってc.force(true)
はならず、同等です。
java - Javaでの大きなファイルの作成(2GB以上)
私は現在、大きなランダムバイナリファイル(2GBから10GB)を作成するプロジェクトに取り組んでおり、アイデアが途方に暮れています。明らかに、10 GB相当のデータを書き出すのは永遠にかかり、タイムリーなアプローチが必要です。私の最新のアイデアは、ランダムアクセスファイルを作成し、サイズを2+ gbに設定することでしたが、.setLength関数はそれほど大きなサイズを処理できないようです。また、あるファイルを別のファイルに追加してファイルを十分に大きくすることも考えましたが、それをすばやく行うための本当に良い方法もないようです。そこに何かアイデアはありますか?
java - Java FileLock の解放に問題がある
私は nio をあまり使ったことがなく、FileLock の解放に問題があります。基本的に、JVM-A では、次のようなファイルに NON-SHARABLE 書き込みロックがあります。
次に、JVM-B で、同じファイルに次のような SHARABLE 読み取りロックを作成しようとします。
私の問題は、JVM-B が永久にループし、SHARABLE 読み取りロックを取得できないことです。JVM-A が実行writeLock.release();
writeChannel.close();
しwriteFile.close();
、JVM-A が終了して実行されなくなったとしても、JVM-B はファイルの SHARABLE 読み取りロックを取得できません。
それで、私はここで何が欠けていますか?
java - ファイル内の文字列を検索し、上にコンテンツを挿入します
txt ファイル内の文字列を検索し、その上に特定のコンテンツを挿入しようとしています。悲しいことに、出力は私が期待したものとはかなり異なって見えます。
誰かが私にヒントを与えることができますか?
ここまでたどり着きました!
これは私が読もうとしているファイルです:
そして、これが私が望んでいるものです
java - 大きなファイルで文字列を検索し、その位置をJavaに保存します
大きなファイル (約 5-10Go) を解析し、いくつかの繰り返し文字列の位置 (バイト単位) を可能な限り高速に検索する方法を探しています。
以下のようなことをして、RandomAccessFile リーダーを使用しようとしました。
問題は、このコードが遅すぎることです (おそらく、バイトごとに読み取るためですか?)。
私は以下の解決策も試しました。これは速度の点では完璧ですが、文字列の位置を取得できません。
誰かが提案するためのより良い解決策を持っていますか?
よろしくお願いします(つづりが間違っていて申し訳ありません、私はフランス語です)
java - Javaでのランダムアクセスファイルと追加のASCII文字
文字列で満たされたランダムアクセスファイルがあります(問題を説明するのに役立ちますが、実際には文字列ではないことはわかっています)。私がやりたいのは、特定の文字列、たとえば文字列#4を表示することです。整数や一般的にプリミティブなデータ型の場合はバイト長が固定されているため簡単ですが、前のすべてのバイトを合計することで正しいバイトを読み取ることができます。
すべての文字列に16文字の固定長を与えることでこの問題を解決できたので、「dog」という単語がある場合、RAFのこの単語は「dog」(dog + 13スペース)であり、バイト長は修正もしました。繰り返しますが、次の方法を使用して正しい値を簡単に読み取ることができます。
ここで、 nは読み取りたい値の数であり、修正は1つの文字列の文字(およびバイト)の数です。
2バイトで構成されているため、文字列の1つで余分なASCII文字(ポーランド語の文字)を使用するまで、すべてが正常に見えました。文字の長さは同じ-16でしたが、17バイトあり、すべてがバラバラになりました。
私に何ができる?
java - エンコーディングが異なるファイルから RandomAccessFile を使用して文字列を読み取る
1250 でエンコードされた大きなファイルがあります。
このファイルからランダムな 10 行を非常に高速な方法で選択する必要があります。私はこれを行いましたが、これらの単語を印刷すると、[zaj?c、dzie?o、kiepsko...] のエンコーディングが間違っているため、UTF8 が必要です。そこで、行を読み取るだけでなく、ファイルからバイトを読み取るようにコードを変更したため、私の努力は次のコードになりました。
しかし、何かが間違っています。このコードを見て、私を助けてくれませんか? 明らかなエラーが表示されるかもしれませんが、私には明らかではありませんか? どんな助けにも感謝します。