【Java入門】ファイルの操作まとめ【Filesクラスを使用】

スポンサーリンク

こんにちは!しーま(@s59shima)です。

いつもブログをご覧いただきありがとうございます。

今回は、こんな悩みや疑問のある方に向けて記事を書きました。

読者
読者

Javaの標準APIを使用してファイル操作ってできるのかな!?

Java7以降で使用できるFilesクラスでのファイル操作を詳しく知りたい方にはオススメの記事です。

ファイル操作はFilesクラスを使用

Java7以降、下記2つのクラスが使用可能となり、ファイル操作がより少ない記述(ソースコード)で実現できるようになりました。

  • java.nio.file.Files
  • java.nio.file.Paths

Filesクラスでファイル操作を行う場合、予め用意されたメソッドを使用することが出来ますので確認してみましょう。

Filesクラスで使用できる主なメソッド

  • createFile(ファイル作成)
  • createDirectory(ディレクトリ作成)
  • createTempFile(一時ファイル作成)
  • copy(ファイルコピー)
  • delete(ファイル削除)

それでは、具体的な使用方法についてサンプルコードを確認しながらやっていきましょう。

サンプルコードを実行する環境は以下の通りです。

  • 【OS】Windows Home 10
  • 【Java】Open JDK 8
  • 【IDE】Net Beans8.2

ファイル操作 -> ファイル作成

FilesクラスのcreateFileメソッドを使用してファイルを作成してみましょう!

サンプルコード

import java.io.IOException;
import java.nio.file.FileAlreadyExistsException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class Sample {
    public static void main( String args[] ) {
        Path path = Paths.get( "D:\ws_java\sample.txt" );
        try {
            Files.createFile( path );
        } catch ( FileAlreadyExistsException e ) {
            System.out.println( e );
        } catch ( IOException e ) {
            System.out.println( e );
        }
    }
}

実行結果

指定した階層(フォルダ)にファイルが作成されていることを確認できましたか??

サンプルコードではDドライブにあるws_javaフォルダにsample.txtというテキストファイルを作成しています。

例外発生時

指定したファイルが既に存在する場合、例外(java.nio.file.FileAlreadyExistsException)が発生しますので気をつけましょう!

ファイル操作 -> ディレクトリ作成

FilesクラスのcreateDirectoryメソッドを使用してフォルダを作成してみましょう!

サンプルコード

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.NoSuchFileException;
import java.nio.file.Path;
import java.nio.file.Paths;

public class Sample {
    public static void main( String args[] ) {
        Path path = Paths.get( "D:\ws_java\sample" );
        try {
            Files.createDirectory( path );
        } catch ( NoSuchFileException e ) {
            System.out.println( e );
        } catch ( IOException e ) {
            System.out.println( e );
        }
    }
}

実行結果

指定した階層(フォルダ)にフォルダが作成されていることを確認できましたか??

サンプルコードではDドライブにあるws_javaフォルダにsampleというフォルダを作成しています。

例外発生時

指定した階層(サンプルコードではDドライブのws_javaフォルダ)に存在しないフォルダなどがあった場合、例外(java.nio.file.NoSuchFileException)が発生してしまいます。

ファイル操作 -> 一時ファイル作成

FilesクラスのcreateTempFileメソッドを使用して一時ファイルを作成してみましょう!

サンプルコード

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class Sample {
    public static void main( String args[] ) {
        Path path = Paths.get( "D:\ws_java\temp" );
        try {
            Files.createTempFile( path, "pre", ".tmp" );
        } catch ( IOException e ) {
            System.out.println( e );
        }
    }
}

実行結果

指定した階層(フォルダ)に一時ファイルが作成されたことを確認できましたか??

サンプルコードを実行時、このような名前で一時ファイルが作成されました。「preXXXXXXXXXX.tmp」

createTempFileメソッドの第1引数(=path)で一時ファイルを保存する場所を指定していますが、省略することも可能です。

その場合、OSのデフォルトの格納場所に一時ファイルが保存されます。

ファイル操作 -> ファイルコピー

Filesクラスのcopyメソッドを使用してファイルコピーしてみましょう!

サンプルコード

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class Sample {
    public static void main( String args[] ) {
        Path fromPath = Paths.get( "D:\ws_java\sample.txt" );
        Path toPath = Paths.get( "D:\ws_java\copy\copysample.txt" );
        try {
            Files.copy( fromPath, toPath );
        } catch ( IOException e ) {
            System.out.println( e );
        }
    }
}

実行結果

指定した階層(フォルダ)にファイルコピーの確認はできましたか??

サンプルコードでは指定した階層にcopysample.txtが作成されることを確認できました!

ファイル操作 -> ファイル削除

Filesクラスのdeleteメソッドを使用してファイル削除してみましょう!

サンプルコード

import java.io.IOException;
import java.nio.file.DirectoryNotEmptyException;
import java.nio.file.Files;
import java.nio.file.NoSuchFileException;
import java.nio.file.Path;
import java.nio.file.Paths;

public class Sample {
    public static void main( String args[] ) {
        Path path = Paths.get( "D:\ws_java\sample.txt" );
        try {
            Files.delete( path );
        } catch ( NoSuchFileException e ) {
            System.out.println( e );
        } catch ( DirectoryNotEmptyException e ) {
            System.out.println( e );
        } catch ( IOException e ) {
            System.out.println( e );
        }
    }
}

実行結果

サンプルコードを実行すると、sample.txtが削除されました。ファイル削除の他に、フォルダ削除も可能です。

例外発生時

削除対象のファイルが無い場合、削除しようとすると例外(java.nio.file.NoSuchFileException)が発生します。

また、フォルダを削除する場合、フォルダの中に一つでもファイルが存在していると、削除が行えません。例外(java.nio.file.DirectoryNotEmptyException)が発生します。

本記事のまとめ

今回は、ファイル操作について解説しました。

最後まで読んでいただきありがとうございました!

本記事をまとめると以下の通りです。

Filesクラスで使用できる主なメソッド

  • createFile(ファイル作成)
  • createDirectory(ディレクトリ作成)
  • createTempFile(一時ファイル作成)
  • copy(ファイルコピー)
  • delete(ファイル削除)

各ファイルの操作方法を紹介

本ブログで紹介する各ファイル操作(読み込み・書き込み)は下記5つ。

おすすめ記事

Javaプログラミングをもう一度本格的に勉強したいっ!」という方へ

逆に、「Javaプログラミング以外を本格的に勉強したいっ!」という方へ

Javaスキルで悩んでいる方必見!本気で学習できる環境を探してみよう!
詳細はこちら
Javaスキルで悩んでいる方必見!本気で学習できる環境を探してみよう!
詳細はこちら
タイトルとURLをコピーしました