問題タブ [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.

0 投票する
2 に答える
297 参照

java - これは Java 7 のオフバイワンのバグですか?

Java API ドキュメントと Java コードの説明と確認をどこで求めればよいか分からないので、ここで行います。

の API ドキュメントでFileChannel、オフ バイ ワン エラー wrt to filepositionおよびsize複数の場所でのファイルを見つけました。

これはほんの一例です。州の API ドキュメントtransferFrom(...):

「指定された位置がファイルの現在のサイズより大きい場合、バイトは転送されません。」

OpenJDKコードにもこのコードが含まれていることを確認しました...

FileChannelImpl.java...ドキュメントと一致するファイル内。

さて、上記のコード スニペットと API ドキュメントは相互に一貫しているように見えますが、ファイルのデータへの 0 ベースのインデックスであるため、上記は単なる「より大きい」ではなく「以上」であるべきだと「感じます 。での読み取りには、呼び出し元に返すデータがありません! ( では、少なくとも 1 バイト (ファイルの最後のバイト) が呼び出し元に返される可能性があります。)positionposition == size()position == size() - 1

同じ API ドキュメント ページにある他の同様のインスタンスを次に示します。

  1. position(...): "位置をファイルの現在のサイズより大きい値に設定することは正当ですが、ファイルのサイズは変更されません。" (「以上」である必要があります。)

  2. transferTo(...): "指定された位置がファイルの現在のサイズより大きい場合、バイトは転送されません。" (「以上」である必要があります。)

  3. read(...): "指定された位置がファイルの現在のサイズより大きい場合、バイトは読み取られません。" (「以上」である必要があります。)

最後に、 の戻り値に関するドキュメント セクションはread(...)、残りのドキュメントとの一貫性さえ保っていません。ここにそれが述べているものがあります:

read(...)

戻り値:

読み取られたバイト数。場合によってはゼロ、または指定された位置がファイルの現在のサイズ以上の場合は -1

したがって、この唯一の例では、彼らが正しいことを述べているのを見ます。

全体として、私はこれらすべてをどうすればよいかわかりません。今日、このドキュメントに一致するコードを書いた場合、Java (コードまたはドキュメント) の将来のバグ修正によってコードがバグだらけになり、私の側でも修正が必要になります。今日の状態で正しいことを自分で行うと、最初からコードにバグが発生します。

0 投票する
2 に答える
33418 参照

java - バッファアンダーフロー例外 Java

ファイルに値を書き込んでいます。

値は正しく書かれています。別のアプリケーションでは、例外なくファイルを読み取ることができます。

しかし、私の新しいアプリケーションではBufferunderflowexception、ファイルを読み取ろうとするとエラーが発生します。

bufferunderflowexceptionを指します:

これは、ファイルを読み取るための私のコードです:

0 投票する
0 に答える
54 参照

java - 大きなファイルをメモリマップできません。マップに失敗しました。OutOfMemoryError

これが私のコードです:

エラーは次のとおりです。

32 ビット システムで 1.5GB のファイルをマップしようとしています。

nio はこの問題に対処することになっていると思いました。私は何か間違ったことをしていますか?

よろしく。

0 投票する
2 に答える
2203 参照

java - Java 7 AsynchronousFileChannel を使用したファイルへの追加

JAVA 7 API を使用して非同期でファイルを書き込もうとしてAsynchronousFileChannelいますが、ファイルに追加する簡単な方法が見つかりませんでした。

API の説明には、AsynchronousFileChannelはファイルの位置を維持しないと記載されており、ファイルの位置を指定する必要があります。これは、グローバル ファイル位置の値を維持する必要があることを意味します。さらに、このグローバル状態はアトミックであるため、正しくインクリメントする必要があります。

を使用して更新を行うより良い方法はありますAsynchronousFileChannelか?

また、誰かが API での Attachment オブジェクトの使用について説明してもらえますか?

javadoc には次のように記載されています。 attachment - I/O 操作にアタッチするオブジェクト。ヌルにすることができます

この添付オブジェクトの用途は何ですか?

ありがとう!

0 投票する
1 に答える
1622 参照

java - transferFrom を使用して Java で 2 つのファイルを連結する方法

以下は私のコードです。transferFrom は、転送先のチャネルの位置を変更しないことに注意してください。

これは動作しません。最初のファイルをコピーするだけです。

よろしく。

0 投票する
0 に答える
111 参照

android - Androidで移動後に画像とビデオが読めない

この関数を使用して、いくつかの画像とビデオをカスタム フォルダーに移動しています。

ファイルは正しく移動され、src ファイルは正常に削除されました。問題は、ギャラリーで画像またはビデオを開こうとすると、黒く表示されるか、ビデオを再生できないことです。そのため、ファイルマネージャーで確認したところ、ファイルのアクセス許可が間違っていることがわかりました。何か提案はありますか?

ありがとう。

0 投票する
1 に答える
1222 参照

java - ソースの宛先が同じ場合、Javaのfileoutputstreamはゼロバイトを生成しますか?

同様のコードを使用して、Java で filecopy を使用しています。

問題は時々sourcedest同じファイルを指している可能性がありoutputChannel = new FileOutputStream(dest).getChannel();ます.同じハンドル。では、これに対抗する方法は何ですか?

コードに何かを追加する必要があります

上記は機能しますか?または、これを処理するより良い方法はありますか?

ありがとう