« JSR 277 turning point? | Home | Some more JSR 203 features »

Some JSR 203 Examples

I’ve been preparing for some upcoming Java SE 7 Preview presentations I’m doing on the No Fluff tour in Reston, VA and Chicago, IL. I worked up some JSR 203 (the new new I/O JSR) examples and thought I would drop them here in case they were useful. These are based on the latest Javadocs available on the project page (b97).

I’m not putting much context here. You can read a well written summary from Elliotte Rusty Harold or watch the JavaOne presentation. Or come see my talks. :)

I actually did a talk like this about 18 months ago and went back and looked at it and the API has changed a lot since then. In many ways, it’s been simplified and consolidated much to its overall benefit. In just the last few months, there’s been a lot of polishing, especially making better use of enums and little things like that. Some of those changes are good and some are pretty long-winded in use.

Path is the new File. It’s a little more nuanced than that, but Path is definitely the center of the new filesystem API. Here’s some basic fiddling with it:

And here’s an example of opening and appending to a file:

One nice thing is that copy and move are built-in (at long, long last):

There is lots of support now for walking directories - here are some internal and external iterator versions:

And there is even a visitor pattern for walking a directory recursively (with support for following symbolic links, checking for cycles, etc):

And of course, we also finally have support for accessing posix file attributes as part of the API (and some other common attribute sets and extensible support for other pluggable file systems):

Finally, there is now support for generic “watch services” to watch file events in a directory (with efficient support depending on the platform):

If anyone spots any bugs, please let me know.


About this entry