JavaOne Tokyo 2012 JS1-04 NIO.2を使って、簡単ファイル操作Read less
java.nio.Buffer java.nio.Bufferクラスは、便利なクラスなのですが、操作の方法が少々分かりにくいので、簡単にまとめてみました。サンプルはByteBufferを使用していますが、他のBufferでも基本的には同じです。 Bufferの作成 Bufferを新規に作成するには、allocate(int capacity)メソッドを使用します。下記のコードは、10バイトの容量を持つByteBufferを作成します。 Bufferの操作 Bufferには、いくつかの重要な値があります。capacity・limit・positionがそれです。以下のメソッドで、それぞれの値の取得や変更を行うことができます。 capacity() Bufferの容量を返します。容量は、このBufferに格納できる最大のサイズです。ByteBufferの場合は、バイト数になります。容量は変更で
さて、今回から J2SE, v1.4 の目玉の 1 つである New I/O について見ていきましょう。 ところで、なんで New にする必要があるのでしょう? java.io パッケージのクラスだけではだめなのでしょうか? これを答えるには今までの Java の I/O に関する問題を考えることになります。 今まで問題になっていたのは、特にサーバー系のアプリケーションで顕著なのですが次のようなことがあげられます。 スケーラビリティ パフォーマンス、特にファイルアクセスのパフォーマンス 文字コードの扱い また、欠けていた機能として 正規表現 があります。 New I/O ではこれらを満たすことを目的にデザインされています。JavaOne 2001 では New I/O のゴールを次のように示していました。 Scalable network I/O Thousands of open con
長年Javaを書いてきた人間としてはちょっと情けないことに、先日、会社で自分の書いたコードが原因でちょっとしたバグを出してしまいました。きちんとテストファーストで単体試験は書いていたのですがテストが不十分でしたね。 バグの原因は、Fileクラスの仕様をちょっと勘違いして使っていたことが原因でした。FileクラスにはrenameTo()というメソッドがあって、このメソッドの呼び出しにより、操作が成功すればもともとFileクラスのオブジェクトに対応していたファイルの名前がファイルシステム上で変更されます。ここで、うっかり、Fileクラスが可変なクラスだと勘違いしてしまっていたのですが、実は、Java Docにも明記されている通り、Fileクラスは不変(immutable)なクラスであり、一度生成したら状態が決して変更されることがない設計となっています。これは、以下のテストケースを見ると確認でき
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く