【Java入門】Fileクラスでファイル操作をする方法まとめ

Javaにはさまざまなファイル処理を行うFileクラスがあります。

この記事ではFileクラスの使い方について、

  • Fileとは
  • ファイルを新規に作成する
  • ファイルリストを取得する
  • ファイル名を変更する
  • ファイルを読み込む方法
  • ファイルに書き込む方法
  • ファイルをコピーする方法
  • ファイルを移動する方法
  • ファイルの読み込み・書き込み可否の判定
  • ディレクトリ・ファイルの存在を確認する
  • 絶対パスと相対パス
  • ファイルを削除する
  • ファイルを閉じる

などのFileクラスの基本的な解説から、応用的な使い方を解説しています。

今回はそんなFileクラスの使い方についてわかりやすく解説します!

Fileクラスとは

Fileクラスは、ファイルやディレクトリを作成したり、ファイルのチェック処理、読み込み・書き込み処理など、ファイルに関するさまざまな操作を行います。

Fileクラスは、コンストラクタの引数にパスやディレクトリ・ファイル名を指定することで、オブジェクトを生成します。

File file = new File(String);

String:ファイルパスやディレクトリを指定します。例)File(“c:¥¥tmp¥¥java.txt”)

Fileクラスを使用するには「import java.io.File」のパッケージを指定します。Javaの開発で、何かしらのファイルを扱う機会は多いと言えますので、この機会にぜひFileクラスの基本的な使い方を覚えておきましょう!

ファイルを新規に作成する

ファイルを新規に作成するためには、FileクラスのcreateNewFileメソッドを使用します。

以下にcreateNewFileメソッドを使用した、ファイルを作成する方法を記述します。

import java.io.File;
import java.io.IOException;

class Main{
	public static void main(String[] args) throws IOException{
        
        File file = new File("/Users/Shared/java/java.txt");
        
        //createNewFileメソッドを使用する
        if (file.createNewFile()){
            System.out.println("ファイル作成成功");
        }else{
            System.out.println("ファイル作成失敗");
        }
    }
}

サンプルでは、ファイルのオブジェクト生成時にコンストラクタの引数にディレクトリ”/Users/Shared/java/“とファイル名”java.txt”を指定しています。

作成したFileクラスのオブジェクトに対してcreateNewFileメソッドを使用しています。これで指定したディレクトリ”/Users/Shared/java/“に、指定したファイル”java.txt”が作成されます。

ファイル作成については、以下の記事で詳しく解説しています。

【Java入門】Fileクラスでファイルやディレクトリを作成する方法
更新日 : 2019年4月11日

ファイルリストを取得する

FileクラスのlistFilesメソッドは、指定したディレクトリに含まれるファイルやディレクトリを配列として返します。

public File[] listFiles()

listFilesメソッドを使用すれば、Fileクラスのオブジェクト配列に、ディレクトリやファイルを一覧として取得することができます。

主に指定したパスの中身を調べたいときに使用します。listFilesメソッドの使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

【Java入門】FileのlistFilesでファイルを検索して一覧を取得
更新日 : 2019年10月14日

ファイル名を変更する

ファイル名を変更するには、renameToメソッドをつかいます。

renameTo(File)

引数Fileには、移動先となるFileクラスのオブジェクトを指定します。renameToメソッドはboolean型を返します。

サンプルコードで確認しましょう。

import java.io.File;
 
public class Main {
    
    public static void main (String[] args) {
        
        File fileIn = new File("/Users/Shared/java/javaIn.txt");
        File fileOut = new File("/Users/Shared/java/javaOut.txt");
 
        if (fileIn.renameTo(fileOut)) {
            System.out.println("変更しました");
        } else {
            System.out.println("変更に失敗しました");
        }
    }
    
}

実行結果:

変更しました

このサンプルコードでは、renameToメソッドを使ってファイル名を変更しています。

まず、Fileクラスのコンストラクタの引数で変更前のファイル名を指定し、オブジェクトを作成します。次に、変更後のファイル名でFileクラスのオブジェクトを作成します。

そして、変更前のFileクラスのオブジェクトからrenameToメソッドを呼び出し、その引数に変更後のFileクラスのオブジェクトを指定することでファイル名を変更することができます。

ファイルを移動する方法

renameToメソッドを使ってファイルを移動することもできます。ファイル名を同じにして、フォルダ名を変更することで移動することになります。

サンプルコードで確認しましょう。

import java.io.File;
 
public class Main {
    
    public static void main (String[] args) {
        
        File fileIn = new File("/Users/Shared/java/javaIn.txt");
        File fileOut = new File("/Users/Shared/tmp/javaIn.txt");
 
        if (fileIn.renameTo(fileOut)) {
            System.out.println("移動しました");
        } else {
            System.out.println("移動に失敗しました");
        }
    }
    
}

実行結果:

移動しました

ファイルを読み込む方法

JavaではFileReaderクラスやFileInputStreamクラスを使ってファイルを読み込みます。FileReaderクラスやFileInputStreamクラスの使い方については、こちらで詳しく解説しています。

ぜひ参考にしてください。

【初心者のためのJava入門】ファイルを読み込む4つの方法を解説
更新日 : 2019年5月9日

ファイルに書き込む方法

JavaではFileWriterクラスやFileOutputStreamクラスを使ってファイルへ書き込みます。FileWriterクラスやFileOutputStreamクラスの使い方については、こちらで詳しく解説しています。

ぜひ参考にしてください。

Javaでファイルに書き込み・出力する(新規/上書き/追記/文字コード)
更新日 : 2019年10月14日

ファイルをコピーする方法

Javaでファイルをコピーする方法はいくつかありますが、ファイル自体を簡単にコピーできるメソッドは存在しません。Java6でファイルをコピーする基本的な方法として、Fileクラスを使う方法とFileChannelクラスを使う方法の2種類があります。

また、Java7で新しく追加されたFilesクラスを使う方法もあります。これらの使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

【Java入門】Fileのコピー方法まとめ
更新日 : 2019年10月14日

ファイルの読み込み・書き込み可否の判定

ファイルの読み込み可否判定

対象のファイルが正常に読み込めるか確認するためには、FileクラスのcanReadメソッドを使用します。
canReadメソッドは、boolean型の値を返します。

public boolean canRead()

以下にcanReadメソッドを使用した、ファイル読み込み可否の方法を記述します。

import java.io.File;
 
public class Main {
    
    public static void main (String[] args) {
        
        File file = new File("/Users/Shared/java/java.txt");
 
        //ファイルの読み込み可否判定
        if (file.canRead()){
            System.out.println("読み込み可能です");
        }else{
            System.out.println("読み込み不可です");
        }
    }
}

実行結果:

読み込み可能です

サンプルでは指定したディレクトリのファイルが読み込み可能ですので、canReadメソッドがtrueを返しています。指定したファイルが存在しなかったり、拡張子がファイル形式の拡張子以外の場合は、falseを返します。

ファイルの書き込み可否判定

対象のファイルが正常に書き込めるか確認するためには、FileクラスのcanWriteメソッドを使用します。
canWriteメソッドは、boolean型の値を返します。

public boolean canWrite()

以下にcanWriteメソッドを使用した、ファイル書き込み可否の方法を記述します。

import java.io.File;
 
public class Main {
    
    public static void main (String[] args) {
        
        File file = new File("/Users/Shared/java/java.txt");
 
        //ファイルの書き込み可否判定
        if (file.canWrite()){
            System.out.println("書き込み可能です");
        }else{
            System.out.println("書き込み不可です");
        }
        
    }
}

実行結果:

書き込み可能です

サンプルでは指定したディレクトリのファイルが書き込み可能ですので、canWriteメソッドがtrueを返しています。ファイルが読み込み専用だったり、指定したファイルが存在しなかった場合は、falseを返します。

ディレクトリ・ファイルの存在を確認する

指定したディレクトリやファイルが存在するか確認するためには、Fileクラスのexistsメソッドを使用します。
existsメソッドは、boolean型の値を返します。

public boolean exists()

以下にexistsメソッドを使用した、ファイルの存在を確認する方法を記述します。

import java.io.File;
 
public class Main {
    
    public static void main (String[] args) {
        
        File file = new File("/Users/Shared/java/java.txt");
        
        //ディレクトリ、ファイルの存在を確認する
        if (file.exists()){
            System.out.println("存在します");
        }else{
            System.out.println("存在しません");
        }        
    }
}

実行結果:

存在します

サンプルでは指定したディレクトリにファイルが存在しますので、existsメソッドがtrueを返しています。ディレクトリの存在確認を行う場合は、Fileオブジェクト生成時にディレクトリを指定します。

絶対パスと相対パス

Fileクラスのオブジェクト生成時に指定する引数のパスは、絶対パス及び相対バス、両方の指定が可能です。絶対パスと相対パスを指定する方法は、以下の記事で詳しく解説しています!

【Java入門】ファイルパスを取得・指定する(java.io.File/java.nio.file.Files)
更新日 : 2019年10月14日

ファイルを削除する

Fileクラスには、ファイルを削除するためのメソッドも用意されています。ファイルを削除する方法は、以下の記事で詳しく解説しています!

【Java入門】file・directoryの削除で失敗しない方法(delete)
更新日 : 2017年8月21日

ファイルを閉じる

Javaでファイルを読み込み、書き込みなどの処理が終了したら、必ずcloseメソッドでファイル処理を終了する必要があります。closeメソッドを使用することで、ファイル処理のために確保されていたリソース(メモリ、ファイルディスクリプタ)などが解放されます。

以下にcloseメソッドの基本的な使い方を記述します。

// ファイル書き込み準備処理
FileWriter file = new FileWriter("/Users/Shared/java/java.txt");
PrintWriter pw = new PrintWriter(new BufferedWriter(file));
 
/* 〜ファイル書き込み処理〜 */
 
//書き込みが完了したら、必ずファイルオブジェクトをクローズする
pw.close();

ファイルの書き込み処理〜ファイルクローズの一連の処理の詳細については、以下の記事で詳しく解説しています!

【Java入門】Fileクラスでファイルやディレクトリを作成する方法
更新日 : 2019年4月11日

まとめ

ここでは、Fileクラスを使用した、基本的な処理について説明しました。

ファイルを扱う処理は、さまざまな場面で使用することがあると思います。もし、Fileクラスの使い方を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

侍ブログ編集部

侍ブログ編集部

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。プログラミングに役立つ情報や有用な情報を発信していきます。
サービスページはこちら
ツイッターはこちら
フェイスブックはこちら