Webサイト制作コースのお申し込みはこちら

Javaのアプリ開発を行っていると、様々なデータを外部ファイルに書き出して保存しておきたいことはよくあります。

本記事では、Javaプログラムからファイルを作成する方法について、サンプルコードを掲載しながらご紹介していきます。

JavaのFilesクラスでファイルを作成


Javaではファイル操作を行うためのクラスとして「Files」クラスが提供されています。

ファイル作成には、Filesクラスより提供されている「createFile」メソッドを使用します。

基本的な使い方

createFileメソッドでは、引数として設定したPathオブジェクトのパスにファイルを新規で作成します。

Path path = Paths.get("作成するファイルパス");
Files.createFile(path);

サンプル

サンプルでは「Main.java」のコードを実行して、「target」フォルダに「sample.txt」ファイルを作成してみたいと思います。

フォルダ構成

サンプルのフォルダ構成は、プロジェクトのルートフォルダから下記のように構成されています。

$ tree
.
├── bin
├── src
│   └── Main.java
└── target

実装

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

public class Main {
	
	public static void main(String[] args) {
		
		try {
			Path file = Paths.get("./target/sample.txt");
			Files.createFile(file);
			System.out.println("ファイルを作成しました。");
		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}
}

このコードを実行すると、コンソールに「ファイルを作成しました。」と表示され「target」フォルダにファイルが作成されます。

$ tree
.
├── bin
│   └── Main.class
├── src
│   └── Main.java
└── target
    └── sample.txt

Java Filesクラスでファイル作成時の注意点と回避策


JavaのFilesクラスを利用してファイルを作成する際、作成するパスに既に指定名のファイルが存在しないことが条件となります。

指定名ファイルが存在する場合

上記のサンプルを一度実行し、sample.txtを作成した状態でもう一度実行してみてください。

すると下記のエラーが発生します。

java.nio.file.FileAlreadyExistsException: ./target/sample.txt

これは作成しようとしたファイルパスに同名ファイルが既に存在することによるもので、エラーを発生させないためには存在チェックを事前に行う必要があります。

ファイル作成前に存在チェックを実施

ファイルの存在チェックには、同じくFilesクラスより提供されている「exists」メソッドを利用することが出来ます。

サンプル

上記で記載したサンプルを、既存ファイルが存在する場合にはスキップする処理に変えてみます。

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

public class Main {
	
	public static void main(String[] args) {
		
		try {
			Path file = Paths.get("./target/sample.txt");
			
			if(Files.exists(file)) {
				System.out.println("既存ファイルが存在するので処理をスキップしました。");
			} else {
				Files.createFile(file);
				System.out.println("ファイルを作成しました。");
			}

		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}
}

sample.txtが存在する状態で、プログラムを実行すると結果は下記のように表示されます。

既存ファイルが存在するので処理をスキップしました。
ポテパンダの一言メモ

「exists」メソッドはファイルが存在する場合にtrueを返却しますが、「notExists」メソッドを使えば存在しない場合にtrueを返却させることも可能です。

Javaプログラムから作成したファイルに書き込みを行う


ここまでで、Javaプログラムからファイルを作成出来たので、今度は作成したファイルに対して書き込み処理を行っていきましょう。

FileWriterとPrintWriter

ファイルに文字を書き込む際、「FileWriter」クラスと「PrintWriter」クラスを用いて、「println」メソッドを利用する方法が一般的です。

FileWriter fw = new FileWriter("ファイルパス");
PrintWriter pw = new PrintWriter(new BufferedWriter(fw));
pw.println("書き込みたい文字列")

サンプル

上記で作成した「sample.txt」に書き込むサンプルを実装してみたいと思います。

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class Main {
	
	public static void main(String[] args) {
		try {
			FileWriter fw = new FileWriter("./target/sample.txt");
			PrintWriter pw = new PrintWriter(new BufferedWriter(fw));			
			
			pw.println("あいうえお");
			pw.println("かきくけこ");
			pw.println("さしすせそ");
			
			System.out.println("ファイルへの書き込みが完了しました。");
			
			pw.close();
		} catch(IOException ex) {
			ex.printStackTrace();
		}

	}
}

実行すると、コンソールに完了メッセージが出力されます。

メッセージを確認して、sample.txtファイルを開くと13~15行目で指定した文字列が書き込まれていることを確認出来ます。

さいごに: Javaプログラムからのファイル作成方法を把握しよう


本記事では、Javaプログラムから新規でファイルを作成する方法について、ご紹介してきました。

Javaでファイルを作成する際、既存のファイルが既に配置されていないかを確認した上で、処理を実行させることが大切です。

ファイル作成自体は、メソッドを利用することで簡単に実現出来ますので、大まかな処理の流れを把握して使いこなせるよう学習していきましょう。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。