2012年6月15日金曜日

Java NIO2 をいじろう - その2


続きを書くのが面倒くさくなっていました。

みけです。

今回もjava.nio.file.Pathのメソッドを見ていきたいと思います。

iterator()

そのパスに含まれるパスを返してくれるのかとおもいきや、

トップパスからのパスをiteratorにして返してくれます。

かつ、ちょっと面白いことが発生します。

groovy:000> home = System.env['HOMEPATH']
===> \Users\mike
groovy:000> dir = new File(home)
===> \Users\mike
groovy:000> path = dir.toPath()
===> \Users\mike
groovy:000> path.iterator().each { println "$it -> ${it.toAbsolutePath()}" }
Users -> C:\Users\mike\Users
mike -> C:\Users\mike\mike
===> sun.nio.fs.AbstractPath$1@44eeef95

親パスになっていると思ったら、

子パスになっている(´・ω・`)

このメソッドを使う場合は気をつけないといけませんね。


relativize(java.nio.filePath)

これは結構便利だと思いました。

あるパスから別のパスへ相対パス化してくれます。

groovy:000> ghome = System.env['GROOVY_HOME']
===> C:\Groovy\1.8.6
groovy:000> jhome = System.env['JAVA_HOME']
===> C:\Program Files\Java\jdk1.7.0_02
groovy:000> gPath = new File(ghome).toPath()
===> C:\Groovy\1.8.6
groovy:000> jPath = new File(jhome).toPath()
===> C:\Program Files\Java\jdk1.7.0_02
groovy:000> jPath.relativize(gPath)
===> ..\..\..\Groovy\1.8.6


register(WatchService, WatchEvent.Kind<?>)

一番面白そうな感じのするメソッドなのですが、

調べ上げられていません。

また、いずれの機会にか…

0 件のコメント:

コメントを投稿