Java7

WatchServiceを利用したIOイベントハンドリング

Java7ではWatchServiceを利用して特定のディレクトリ内のイベントを監視するプログラムを簡単に記述することが可能です。用途としては常駐プロセス系のプログラムで特定ディレクトリのファイル作成、更新、削除などのイベントをハンドリングし任意の処理を行…

Java7のPhaserクラスを利用した同期処理

Java7ではPhaserという同期処理用のクラスが追加になっています。PhaserはCyclicBarriarやCountDownLatch同様にスレッドの同期処理を行うために利用しますが、より柔軟性に富んでいるようです。Phaserクラスの詳細はJavaDocを参照すればわかると思うので、今…

Fork/Joinフレームワークを用いたマージソート

Java7ではFork/Joinフレームワークが新たに追加になっているおかげでマージソートなどでデータをソートするアルゴリズムを効率的に処理するプログラミングが比較的簡単に作成することが可能です。今回は自分用のメモとしてFork/Joinフレームワークを利用した…

AsynchronousFileChannelを用いたファイルの読書き処理について

AsynchronousFileChannelを用いたファイルの非同期書き込みと、読み込み処理について記載します。まずは書き込み処理を行う処理。 import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.AsynchronousFileChannel; import java…

SeekableByteChannelを利用したファイルのランダムアクセス処理

Java7ではSeekableByteChannelこれはファイルのランダムアクセス処理を行うためのノンブロッキングIOクラスが存在します。 ByteBufferクラスと合わせて利用するのですが、今回はこのクラスを用いた簡単なサンプルをメモとして残すことにします。当該クラスを…

DirectoryStreamを利用したファイル検索に関するメモ

Java7では新たにDirectoryStreamが追加されていますが、これがなかなか便利なので簡単にメモを残すことに。もっとも単純なサンプルは、以下のようにただディレクトリ内のコンテンツを出力するものかと思います。 final Path path = FileSystems.getDefault()…

SimpleFileVisitorとFiles#walkFileTreeによるディレクトリ(サブディレクトリ含む)の削除方法

これまで何度かにわたってJava7で追加になったIO関連の機能についてメモ的に残してきましたが、前回紹介したプログラムにディレクトリとファイルの削除を行う処理があったと思います。Filesクラスのdeleteメソッドを実行すると引数で渡したPathオブジェクト…

Filesクラスを用いたファイル操作

前回からの続編ということで、Java7のjava.nio.file.Filesクラスを利用した各種ファイル操作をメモとして残します。今回はFilesクラスによる基本的なディレクトリ、ファイルの作成、コピー、削除を紹介します。(まあ、自分用のメモですが。) import java.i…

コンテンツタイプとファイル属性の確認方法

Java7ではコンテンツタイプの確認とファイル属性を確認するためのAttributeViewが提供されています。とりあえず忘れないためにサンプルプログラムをメモ。 import java.io.IOException; import java.nio.file.FileSystem; import java.nio.file.FileSystems;…

ThrowableクラスのgetSuppressedメソッドについて

Java7でThrowableクラスにgetSuppressedメソッドが追加になっています。これはtry-with-resourcesを利用した際にたとえば複数リソースのクローズ時に複数の例外が発生した場合、catchブロックでSuppressされた例外を取得する際などに利用します。 try (Resou…

NIO2と戯れる

今回は久しぶりにJava7ネタで行こうと思います。Java7でNIOが大幅に改善されNIO2として新たな機能が追加されているようです。調べてみると結構いろいろ追加があってまだ全部調べきれてないけど今回は基本的な部分を紹介します。説明をだらだら書いてもしょう…

TransferQueueについて

Java7ではjava.util.concurrentパッケージに新たにTransferQueueが追加になりました。このキューを利用するとプロデューサがデータをTransferQueueに送信すると、コンシューマがそれを取り出すまでプロデューサは待たされることになるようです。簡単なプログ…

switch文と複数例外のcatch

Java7について今回は少し地味なので2つ紹介。 switch文について Java7のswitch文ではcase句でString型のクラスで条件判断ができるようになっています。 switch(val) { case "JPN": System.out.println("Japan"); break; case "US": System.out.println("Unit…

try-with-resourcesによる自動でのリソース解放

Java7ではtry-with-resourcesでCloseableインターフェースを実装したオブジェクトを利用する際に、リソースを自動で開放することが可能となったみたいです。 つまりこれまでfinally句内で記述していたclose処理を記述する必要がないということです。どんな感…

Java7がリリースされました。

Java 7がいよいよリリースされました。結構いろいろな機能が追加になっているみたいです。NIO2やFork/Join、クラスローダの拡張、Unicode6.0への対応など。今いろいろ試してる最中だけどとりあえず、個人的に気に入った機能をメインにこれから少しずつ解説し…