このページを正しく表示するには、ブラウザでJavaScriptを有効にする必要があります。
コース: 重要なクラス
レッスン: 基本的なI/O
セクション: ファイルI/O(NIO.2を含む)
旧来のファイルI/Oコード
ホームページ > 重要なクラス > 基本的なI/O

旧来のファイルI/Oコード

旧来のコードとの相互運用性

Java SE 7よりも前のリリースでは、ファイルI/Oのメカニズムとしてjava.io.Fileクラスが使用されていましたが、このクラスには以下のようないくつかの欠点があります。

旧来のコードでjava.io.Fileを使用していて、そのコードへの影響を最小限に抑えつつjava.nio.file.Pathの機能を活用したいとお考えではないでしょうか。

java.io.FileクラスにはtoPathメソッドが用意されています。このメソッドを次のように使用すると、古いスタイルのFileインスタンスを、java.nio.file.Pathインスタンスに変換できます。

Path input = file.toPath();

これにより、Pathクラスの豊富な機能セットを活用できるようになります。

たとえば、ファイルを削除する次のようなコードがあるとします。

file.delete();

このコードは、Files.deleteメソッドを使用して次のように変更できます。

Path fp = file.toPath();
Files.delete(fp);

これとは逆に、Path.toFileメソッドは、Pathオブジェクトを表すjava.io.Fileオブジェクトを構成します。

java.io.File機能とjava.nio.file機能のマッピング表

ファイルI/OのJava実装はJava SE 7リリースで完全に再構築されたため、メソッドを他のメソッドに単純に入れ替えるということはできません。 java.nio.fileパッケージの豊富な機能を使用するには、前述のとおり、File.toPathメソッドを使用する方法がもっとも簡単です。 ただし、この方法の使用が望ましくない場合や、この方法ではニーズを満たせない場合は、ファイルI/Oコードを再記述する必要があります。

java.io.File APIとjava.nio.file APIには、1対1の対応関係はありませんが、次の表に、この2つのAPI間の機能の対応関係に関する一般的な考え方と詳細情報の参照先を示しています。

java.io.File機能 java.nio.file機能 チュートリアルの関連セクション
java.io.File java.nio.file.Path Pathクラス
java.io.RandomAccessFile SeekableByteChannelの機能 ランダム・アクセス・ファイル
File.canReadcanWritecanExecute Files.isReadableFiles.isWritableFiles.isExecutable
UNIXファイル・システムでは、ファイル属性パッケージを使用して9つのファイル権限を確認
ファイルやディレクトリのチェック
メタデータの管理
File.isDirectory()File.isFile()File.length() Files.isDirectory(Path, LinkOption...)Files.isRegularFile(Path, LinkOption...)Files.size(Path) メタデータの管理
File.lastModified()File.setLastModified(long) Files.getLastModifiedTime(Path, LinkOption...)Files.setLastMOdifiedTime(Path, FileTime) メタデータの管理
さまざまな属性を設定するFileのメソッド: setExecutablesetReadablesetReadOnlysetWritable FilessetAttribute(Path, String, Object, LinkOption...)メソッドに置換 メタデータの管理
new File(parent, "newfile") parent.resolve("newfile") パス操作
File.renameTo Files.move ファイルやディレクトリの移動
File.delete Files.delete ファイルやディレクトリの削除
File.createNewFile Files.createFile ファイルの作成
File.deleteOnExit createFileメソッドで指定するDELETE_ON_CLOSEオプションに置換 ファイルの作成
File.createTempFile Files.createTempFile(Path, String, FileAttributes<?>)Files.createTempFile(Path, String, String, FileAttributes<?>) ファイルの作成
ストリームI/Oを使用したファイルの作成と書込み
チャネルI/Oを使用したファイルの読取りと書込み
File.exists Files.existsFiles.notExists ファイルまたはディレクトリの存在チェック
File.compareToequals Path.compareToequals 2つのパスの比較
File.getAbsolutePathgetAbsoluteFile Path.toAbsolutePath パスの変換
File.getCanonicalPathgetCanonicalFile Path.toRealPathまたはnormalize パスの変換(toRealPath
パスの冗長部分の削除(normalize
File.toURI Path.toURI パスの変換
File.isHidden Files.isHidden パスに関する情報の取得
File.listlistFiles Path.newDirectoryStream ディレクトリの内容リストの取得
File.mkdirmkdirs Path.createDirectory ディレクトリの作成
File.listRoots FileSystem.getRootDirectories ファイル・システムのルート・ディレクトリ・リストの取得
File.getTotalSpaceFile.getFreeSpaceFile.getUsableSpace FileStore.getTotalSpaceFileStore.getUnallocatedSpaceFileStore.getUsableSpaceFileStore.getTotalSpace ファイル・ストア属性


サンプル・プログラムで問題が発生した場合は、 Compiling and Running the Examples: FAQsを参照してください。
フィードバックをお寄せください。さまざまなご意見をお待ちしております。

前のページ: その他の便利なメソッド
次のページ: まとめ