java.nioパッケージは、Java1.0より導入されていたjava.io.Fileに対して、
クラスの設計が整理されたファイルの入出力を提供するJava7より導入された新しいパッケージです。
新規のシステム開発でJavaプラットフォームのバージョンがJava7以降であれば、
ファイルの入出力時には、java.nioをベースで構築することをお勧めします。
Windows,Linux,UnixなどOSでは、利用者に任意のテキスト、動画、音声などのメディアをファイル単位で
ハードウェアのディスクに管理し、利用者が利用する時にファイルをディスクから容易にアクセスする方法を提供します。
OSのファイルシステムは、利用者にハードウェアのディスク上の位置やサイズなどを一切気にする必要がありません。
利用者は、OSのデフォルトのディレクトリ階層に自分で作成したディレクトリに任意のファイルを保存します。
ディレクトリ階層に管理されたファイルは、GUIのエクスプローラーやCUIのコンソールからアクセスします。
Javaアプリケーションから、ディレクトリやファイルを操作する際にもこのファイルシステムの基本構成である
ルートパス、ディレクトリ、パス(ディレクトリ階層)、ファイルに対応するクラスを操作することで処理を実現します。
Windows10のデフォルトのディレクトリ階層については、本サイトのディレクトリ管理でご確認下さい。
アプリケーションでファイルにアクセスするためのパスの表現方法には、2つあります。
1つは、「C:¥projects¥education」というようにルートパスから全てのディレクトリ階層を示す「絶対パス」です。
もう1つは、アプリケーションのカレントパス(ディレクトリの現在位置)から相対的なパスを示す「相対パス」です。
例えば、カレントパスが「C:¥projects」にあり、educationディレクトリへの相対パスは「¥projects」になります。
アプリケーションを構築する際には、絶対パスと相対パスを組み合わせてファイルやディレクトリにアクセスします。
シンボリックリンクとは、Linux,Unix系で「ln -s 対象のパス シンボリックリンク名」コマンドでファイルやディレクトリに
別名(シンボリック名)を付与してシンボリックリンクから別のパスのディレクトリやファイルにアクセスする方法です。
Windwosでは、ショートカットを意味します。
Javaアプリケーションでシンボリックリンクがディレクトリのを指している場合には、
シンボリックリンクに作成したファイルは、シンボリックリンクの指定しているディレクトリにファイルが作成されます。
Javaアプリケーションでファイルにアクセスする方法は、
上記パスで説明した「絶対パス」と「相対パス」を指定したjava.nioパッケージを操作する方法があります。
そして、開発者がもう1つの方法を意識する必要があります。それは、クラスパスに管理されているファイルへのアクセスです。
クラスパスは、環境変数「classpath=c:/education/conf/logging.properties;c:/education/deploy/education-main.jar」などで指定する方法と
javaコマンドのコマンド引数「-cp c:/education/conf/logging.properties;c:/education/deploy/education-main.jar」で引き渡す方法があります。
Javaアプリケーションの設定ファイル(ログのプロパティファイルや設定ファイルなど)は、慣習でクラスパスに定義します。
このとき、Javaアプリケーションが機能要件でファイルを操作する事とクラスパスからファイルをロードする事は方法が異なります。
java.nioパッケージで説明する内容は、前者の機能要件でファイルを操作する事を実現するためのパッケージです。
java.nioのパッケージJava8JavaDocを見て下さい。
java.ioパッケージに存在したFileクラスはFilesクラスとPathクラスで表現されるようになりました。
FilesクラスのAPIを確認するとコンストラクタ及びメソッドの引数、戻り値にPathクラスが利用されています。
java.nioパッケージを正しく理解して、ファイルやディレクトリ操作をするには、Pathクラスの操作を最初に理解する必要があります。
次頁にPathクラスを利用して、「絶対パス」「相対パス」からファイルやディレクトリ位置の示し方と具体的なサンプルについて説明します。
Webアプリケーションを作成する場合、複数台のサーバでシステムを構築します。
Webサーバ、Webアプリケーションサーバ、ファイルサーバ、バッチサーバ、データベースサーバなど色々あります。
上記図のようにserver1に配備されたJavaアプリケーションからserver1のファイルやディレクトリにアクセスすることは、
簡単に実現できます。
開発者がサーバサイドのアプリケーションを構築する場合には、server1に配備されたJavaアプリケーションから
server2のファイルやディレクトリにアクセスする方法も学習する必要があります。
最初にserver1のケースのようにJavaアプリケーションに配備されたPC又はサーバ内のディレクトリ・ファイル操作を学習し、
次にネットワーク上の別サーバに管理されたファイルのアクセス方法を学習してきましょう。