はじめてのJava
このシリーズでは、初めてJavaやプログラミングを勉強する方向けに、Javaによるプログラミングの基礎を説明していきます。
目標レベルは、Javaの資格試験の一つである「Oracle Certified Java Programmer, Silver」(通称Java Silver)に合格できる程度の知識の習得です。
はじめてJavaやプログラムに触れる方にもできるだけわかりやすい解説を心がけていきます。
入出力編
入出力編では、Javaプログラムを外部ファイル等と連携する「入出力処理」について扱っていきます。
今回の記事は、入出力についての基本的な内容について解説していきます。なお、この内容はJava Silverよりも少し高度な内容です。
目次
入出力処理とは
入出力処理とは、言葉の通り入力と出力についての処理を行います。
プログラミングにおける入力とは、外部からの情報をプログラム内に取り込んで処理を進めることを言います。
出力はその逆で、プログラム内で処理した情報をプログラム外部へと渡すことを言います。
今までの記事では、Javaのプログラム単品で処理が完結していましたが、入出力処理を組み込むことで外部ファイルとJavaのプログラムを連携することが出来るようになります。
以下の図のように、プログラム外から取得した文字列を、外部ファイルを指定して書き込むといった処理が出来るようになります。

java.ioパッケージ
java.ioパッケージのioとはInputとOutputの頭文字をとったもので、パッケージ名がそのまま入出力という意味になっています。
その名の通り、java.ioパッケージには入出力処理に関係したクラスがまとめられています。
今回は数記事に分けてjava.ioパッケージのクラスを使ったJavaプログラムとローカルファイルとの入出力について解説していきます。
今記事ではサンプルコードのみ紹介して、ソースコードやjava.ioパッケージの詳しい解説は次回記事からしていきます。
サンプルコード
サンプルコードでは、java.ioパッケージのFileクラスを使用したコードを紹介します。
Fileクラスは、OSに依存せずにファイルシステムを操作できるようにしてくれるクラスです。
今回紹介するサンプルコードは、指定したディレクトリ以下のディレクトリやファイルを探索してすべて出力するプログラムとなっています。
今回はサンプルコードをコピー&ペーストして実行し、動作だけ確認しましょう。
import java.io.File;
public class Sample{
public static void main(String[] args) {
// サンプルではカレントディレクトリを指定
// この変数に探索したいディレクトリのパスを代入する
String root = ".";
File rootDir = new File(root);
System.out.println("探索開始するディレクトリ:" + rootDir.getAbsolutePath());
Sample obj = new Sample();
obj.navigate(rootDir);
}
public void navigate(File dir) {
System.out.println("");
System.out.println("探索中のディレクトリ:" + dir);
// 指定したディレクトリに含まれるファイル・ディレクトリの名前を配列で取得
String[] contents = dir.list();
for(int i = 0;i < contents.length; i++) {
System.out.println(contents[i]);
File child = new File(dir,contents[i]);
// 取得した要素がディレクトリだった場合、そのディレクトリ内をさらに探索
if(child.isDirectory()) {
navigate(child);
}
}
}
}
上記のコードで探索するディレクトリを指定している部分は7行目の部分となります。
「.」の部分でディレクトリを文字列で指定していることになります。詳しい指定の仕方は次回記事で解説しますが、今回は「.」と指定することでカレントディレクトリを探索するように指定していることになります。
eclipse上でサンプルコードを実行すると、実行したプロジェクト内のディレクトリ・ファイル名を全て出力されることになります。
以下は筆者の環境で実行した際の出力の一部となります。
