問題タブ [filechannel]
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の文字は2バイトの長さですが、バイトバッファを使用してファイルに文字列を書き込むと、ファイルチャネルの位置が文字数だけ増加します。Filechannel.position() メソッドがファイルの先頭から現在の位置までのバイト数を返すことを読んだので、2 * numberof chars ずつインクリメントする必要はありませんか?
java - Java XML 解析
以下のような複数の XML ドキュメントを順番に含むファイルがあります。
それが何度か繰り返されます。
私はJavaを使用し、ファイル用にFileChannelを開き、読み取るバイトバッファを持っています。Java で XML バイトの部分解析を行う組み込みの方法、より簡単な方法、または既に解決済みの方法がある場合は、感謝します。たとえば、次のようにします。
java - java.nio.channels.FileChannelを使用してByteBufferに読み取る方法は、BufferedReader#readLine()のような同様の動作を実現します。
ファイルからの読み取りに使用java.nio.channels.FileChannel
したいのですが、同じように1行ごとに読み取りたいですBufferedReader#readLine()
。java.nio.channels.FileChannel
代わりに使用する必要があるのjava.io
は、ファイルにロックをかけ、そのロックファイルから1行ずつ読み取る必要があるためです。だから私は強制的に使用しますjava.nio.channels.FileChannel
。助けてください
編集これは、FileInputStreamを使用してFileChannelを取得しようとしている私のコードです
コードがここにあるときlock = channel.lock();
、それはすぐにに行き、finally
まだlock
あるnull
ので、をlock.release()
生成しNullPointerException
ます。理由はわかりません。
java - 2 プロセスによる Java ファイルのロック
まず、相互にサポートする 2 つのプロセスが同時に実行されています。1 つのプロセスは、タイムスタンプで区切られたデータのスナップショットを含む単純なフラットファイルを読み取ります。このアプリケーションは、このファイルを (ファイル ロックなしで) 開き、スナップショットを読み取り、別のファイルに配置topology.netviz
します (ファイル ロックあり)。2 番目のアプリケーションtopology.netziv
は、データを (ファイル ロックを使用して) 読み取り、一時ファイルに転送して、他のプロセス間でロックを保持するプログラミングの待機時間を短縮します。
私の問題は、述べたように単純です。2 番目のプロセスでデータを一時ファイルに転送すると、奇妙な文字/破損したデータが転送されます。何が問題なのかを感じていただけるように、以下にいくつかのコードを提供しました。
プロセス 1:
プロセス 2:
java - Java で FloatBuffer または Float(float) 配列をファイルに書き込む最速の方法
ファイルに書き込む必要があるフロート データが大量にFloatBuffer
あります (3 分もかかりません)。現在、要素ごとにファイルDataOutputStream
に書き込むために a が使用されています。FloatBuffer
これは遅いです。できれば、 を使用したいのですが、 をFileChannel
にFloatBuffer
変換できないようで、データを書き込むにはByteBuffer
バイトが必要なため、問題が発生します。FileChannel
データ ソースとして使用する代わりにFoatBuffers
、配列を簡単に使用できます。しかし、代わりに ByteBuffer/array を簡単に使用することはできません。
この問題についての洞察をいただければ幸いです。ありがとう。
java - FileInput/OutputStream と FileChannels の比較 -- パフォーマンスが向上します。
私は、かなりの量のデータをフォルダーからフォルダーに (一度に数十枚の写真の範囲で) コピーする必要があるプログラムを作成しています。もともと私はjava.io.FileOutputStream
単純にバッファに読み込んで書き出すために使用していましたが、java.nio.FileChannel
.
私が持っているデータを使用して本格的な管理されたテストを実行するためのリソースはありませんが、それぞれの利点が何であるかについてコンセンサスはないようです (FileChannel がスレッドセーフであることを除いて)。一部のユーザーFileChannel
は、小さなファイルに最適であると報告していますが、他のユーザーは、大きなファイルで大幅な速度の向上を報告しています。
FileChannel
そもそも作成の意図が何であったかを誰かが正確に知っているかどうか疑問に思っています.より良いパフォーマンスのために設計されたのでしょうか? どのような場合に?また、一般的な種類のデータに対して決定的なパフォーマンスの向上がありますか?それとも、十分に専門化されたデータを扱っていないため、違いは些細なものであると予想されますか?
編集:私のデータはスレッドセーフである必要はないと仮定します。
java - FileChannelを使用してInputStreamを書き込みますか?
InputStreamをFileChannelに書き込むことはできますか?
java.nio.channels.FileChannelを使用してファイルを開き、ロックしてから、InputStreamを出力ファイルに書き込みます。InputStreamは、別のファイル、URL、ソケットなどで開くことができます。私は次のコードを書きました:
ただし、outputChannel.transferFrom(...)の最初の引数は、ReadableByteChannelオブジェクトを要求します。InputStreamを入力として使用しているため、必要なチャネルを作成するためのinputStream.getChannel()メソッドがありません。
InputStreamからReadableByteChannelを取得する方法はありますか?
android - MappedByteBuffer を介して未加工の VBO データを OpenGL にロードする (機能しない)
Google が GDC 2011 で行った講演で提示された方法を使用して、圧縮されていない未加工の VBO データをロードしようとしました。残念ながら、私にとってはうまくいきません。そのためのハックな回避策を見つけることができました(以下のコードでコメントアウトされています)が、そのハックなしでこれを機能させたいと思います。これが私のコードのサンプルです:
java - 区切りファイルから最初の行を削除する
約数百万のレコードを含む区切りファイルがあります。さらに処理する前に、区切りファイルから最初の行を削除したいと考えています。
最初の行の長さは可変で、ファイルの種類によって異なります。最初の行を削除する最良の方法として提案されている FileChannel と RandomAccessFile を読み上げました。
しかし、最初の行の長さを取得して削除する方法については、わかりません。
java - 巨大なパイプ区切りファイルの処理
私の以前の投稿を参照して
小さいファイルを処理して最初の行を削除することができました....しかし、巨大なファイルの場合、ファイル全体を読み取ってから再度書き戻すため、メモリの問題があります。
誰かがこの問題のより良い代替案を提案できますか?
Advanceをありがとう。
ヴィヴェック