【サンプルコード付き】Javaでファイルを扱うFileクラスの使い方

JavaのFileクラス
  • このエントリーをはてなブックマークに追加
  • Pocket

JavaのFileクラスはファイルやディレクトリを扱うためのクラスだ。

例えばファイルパスを取得したり、ディレクトリを作成したり、ファイルを削除したりとローカル環境を編集するのに使うことができる。

このページではFileクラスについてまとめている。ファイルを扱う必要がある方は参考にしてほしい。

JavaのFileクラス

Fileクラスは、システムによって異なるファイルとディレクトリのパス名をシンプルにひとつの表現にしたものだ。このクラスは、パス名をシステムに依存しない階層的な抽象パス名によって表現している。

抽象パス名を構成する文字列:

抽象パス

  • ディスクドライブ「C:\」、Linuxのrootディレクトリ「/」のようなシステムに依存するオプションの接頭文字列
  • ゼロかそれ以上の文字列による名前の並び

抽象パス名の最初の名前はディレクトリかもしれない。また、それに続く名前はディレクトリかファイルの名称かもしれない。

パス名と抽象パス名の間の変換は、システムに依存している。抽象パス名がパス名に変換されるとき、各々の名前はデフォルトの区切り文字で分けられる。デフォルトの区切り文字は、システム・プロパティ:file.separatorに定義されていて、このクラスのpublic static fields separatorとseparatorCharによって利用可能となる。パス名が抽象パス名に変換されるとき、名前はデフォルトの区切り文字で分離されるか、基本システムによってサポートされた他の区切り文字で分離される。

書き方の基本は簡単だ。

File インスタンス名 = new File(パス名)

JavaでのFileのディレクトリとファイルを表現する書き方の詳細を確認していこう。

コンストラクタの引数による違い

ひとつのパス名文字列

File(String pathname)

内容

新しいFileのインスタンスを、与えられたパス名文字列から抽象パス名に変換することにより生成する。

 

引数:pathname – パス名文字列

例外:NullPointerException – もし、パス名引数がnullならば

親と子のパス名文字列

public File(String parent, String child)

内容

新しいFileのインスタンスを、親のパス名文字列と子供のパス名から生成する。

もしparentがnullならば、新しいFileのインスタンスは、あたかも引数が一つのFileコンストラクタを起動したかのように、与えられたchildパス名文字列からFileインスタンスが生成される。そうでなければ、親パス名文字列がディレクトリを示し、子パス名文字列がディレクトリかファイルのどちらかを示している。もし子パス名文字列が完全ならば、それはシステムに依存する方法で相対パス名に変換される。

もしparentが空の文字列ならば、childが絶対パス名に変換され、システムに依存するデフォルト・ディレクトリを基に結果を決定することによって、新しいFileインスタンスが生成される。そうでなければ、各々のパス名文字列は抽象パス名に変換され、child抽象パス名はparentを基にして決定される。

 

引数:

parent – 親パス名文字列

 child – 子パス名文字列

例外:NullPointerException – もしchildがnullならば、

親抽象パス名と子パス名文字列

File(File parent, String child)

内容

新しいFileのインスタンスを、与えられた親抽象パス名と子パス名文字列から生成する。

もしparentがnullならば、新しいFileのインスタンスは、あたかも引数が一つのFileコンストラクタを起動したかのように、与えられたchildパス名文字列からFileインスタンスが生成される。そうでなければ、親抽象パス名がディレクトリを示し、子パス名文字列がディレクトリかファイルのどちらかを示している。もし子パス名文字列が完全ならば、それはシステムに依存する方法で相対パス名に変換される。

もしparentが空の抽象パス名ならば、childが絶対パス名に変換され、システムに依存するデフォルト・ディレクトリを基に結果を決定することによって、新しいFileインスタンスが生成される。そうでなければ、各々のパス名文字列は抽象パス名に変換され、child抽象パス名はparent基にして決定される。

 

引数:

parent – 親抽象パス名

 child – 子パス名文字列

例外:NullPointerException – もしchildがnullならば、

パス名を表現するサンプルプログラム

それでは実際にサンプルプログラムを確認してみよう。

3つのサンプルプログラムはWindowsのC:ドライブのディレクトリ:C:\temp\abcに以下のようなファイルやフォルダがあることを、各種のコンストラクタを使用して表現しようとしている。

サンプルプログラム

ひとつのパス名文字列コンストラクタのサンプルコード

import java.io.File;

public class FileConstructorWithOneStringParameter {
    public static void main(String[] args) {
        String directory001Pathname = "C:\\temp\\abc\\Directory001";//[1]
        String directory002Pathname = "C:\\temp\\abc\\Directory002";//[2]
        String file001Pathname = "C:\\temp\\abc\\File001";//[3]
        String file002Pathname = "C:\\temp\\abc\\File002";//[4]
        File file;//[5]

        file = new File(directory001Pathname);//[6]
        System.out.println("[7] File(directory001Pathname) -> [" + file.getAbsolutePath() + "]");
        file = new File(directory002Pathname);//[8]
        System.out.println("[9] File(directory002Pathname) -> [" + file.getAbsolutePath() + "]");
        file = new File(file001Pathname);//[10]
        System.out.println("[11] File(file001Pathname) -> [" + file.getAbsolutePath() + "]");
        file = new File(file002Pathname);//[12]
        System.out.println("[13] File(file002Pathname) -> [" + file.getAbsolutePath() + "]");
    }
}

実行結果

[7] File(directory001Pathname) -> [C:\temp\abc\Directory001]
[9] File(directory002Pathname) -> [C:\temp\abc\Directory002]
[11] File(file001Pathname) -> [C:\temp\abc\File001]
[13] File(file002Pathname) -> [C:\temp\abc\File002]

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

このプログラムは、親ディレクトリが共通の4つのパス名をFile(String pathname)コンストラクタを使って表現している。

  • [1] パス名:C:\temp\abc\Directory001"をdirectory001Pathnameに設定する。
  • [2] パス名:C:\temp\abc\Directory002"をdirectory002Pathnameに設定する。
  • [3] パス名:C:\temp\abc\File001をfile001Pathnameに設定する。
  • [4] パス名:C:\temp\abc\File002"をfile001Pathnameに設定する。
  • [5] Fileクラスのインスタンス:fileを宣言する。
  • [6] directory001PathnameらFileクラスのインスタンス:fileを生成する。
  • [7] fileの絶対パス名を表示する。
  • [8] directory001PathnameらFileクラスのインスタンス:fileを生成する。
  • [9] fileの絶対パス名を表示する。
  • [10] directory001PathnameらFileクラスのインスタンス:fileを生成する。
  • [11] fileの絶対パス名を表示する。
  • [12] directory001PathnameらFileクラスのインスタンス:fileを生成する。
  • [13] fileの絶対パス名を表示する。

親と子のパス名文字列コンストラクタのサンプルコード

import java.io.File;

public class FileConstructorWithTwoStringParameters {
    public static void main(String[] args) {
        String parent = "C:\\temp\\abc";//[1]
        String[] children = {"Directory001", "Directory002", "File001", "File002"};//[2]

        for (int index = 0; index < children.length; index ++) {//[3]
            File file = new File(parent, children[index]);//[4]
            System.out.println("[5] File(parent, child[" + index +"]) -> [" + file.getAbsolutePath() + "]");
        }
    }
}

実行結果

[5] File(parent, child[0]) -> [C:\temp\abc\Directory001]
[5] File(parent, child[1]) -> [C:\temp\abc\Directory002]
[5] File(parent, child[2]) -> [C:\temp\abc\File001]
[5] File(parent, child[3]) -> [C:\temp\abc\File002]

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

このプログラムは、親ディレクトリが共通の4つのパス名をFile(String parent, String child)コンストラクタを使ってどのようにシンプルに表現できるかを示している。

  • [1] 親パス名:C:\temp\abcをparentに設定する。
  • [2] 4つの子パス名:Directory001, Directory002, File001, File002を配列:childrenに設定する。
  • [3] 配列の数だけループさせる。
  • [4] parentとchildrenからFileクラスのインスタンス:fileを生成する。
  • [5] fileの絶対パス名を表示する。

親抽象パス名と子パス名文字列コンストラクタのサンプルコード

import java.io.File;

public class FileConstructorWithAbstractPathname {
    public static void main(String[] args) {
        File parent = new File("C:\\temp\\abc");//[1]
        String[] children = {"Directory001", "Directory002", "File001", "File002"};//[2]

        for (int index = 0; index < children.length; index ++) {//[3]
            File file = new File(parent, children[index]);//[4]
            System.out.println("[5] File(parent, child[" + index +"]) -> [" + file.getAbsolutePath() + "]");
        }
    }
}

実行結果

[5] File(parent, child[0]) -> [C:\temp\abc\Directory001]
[5] File(parent, child[1]) -> [C:\temp\abc\Directory002]
[5] File(parent, child[2]) -> [C:\temp\abc\File001]
[5] File(parent, child[3]) -> [C:\temp\abc\File002]

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

このプログラムは、親ディレクトリが共通の4つのパス名をFile(File parent, String child)コンストラクタを使ってどのようにシンプルに表現できるかを示している。

  • [1] Fileクラスのインスタンス:parentを親パス名:C:\temp\abcから生成する。
  • [2] 4つの子パス名:Directory001, Directory002, File001, File002を配列:childrenに設定する。
  • [3] 配列の数だけループさせる。
  • [4] parentとchildrenからFileクラスのインスタンス:fileを生成する。
  • [5] fileの絶対パス名を表示する。

まとめ

このページではJavaのFileクラスについてまとめてきた。

細かい部分を知るよりも、サンプルコードを打って動かしたほうがわかりやすいだろう。ぜひトライしていただければと思う。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する