【Java】JSPでタグライブラリを使う(JSTL)
こんにちは。エンジニアの新田です!ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。今回は、JSPの標準タグライブラリ「JSTL」について紹介します。Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!関連記事リンク: 【Java】JSPの基本的な構文/【Java】JSPのアクションタグ
Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!
フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。
こんにちは。
駆け出しプログラマーの松倉です!
ここでは、java.io.Fileクラスの使い方の紹介・解説を行います。
プログラミング未経験の方、Javaについて勉強している方、これから勉強したいと思っている方の参考になれば幸いです!
「java.ioパッケージ」には、データストリーム、直列化、ファイルシステムによるシステム入出力用などの様々なクラスが含まれます。
java.ioパッケージの一つである「java.io.File」は、Javaでファイルやディレクトリ(フォルダ)の一覧取得、フィルタリングなどの操作を行うことができます。
ファイル操作はこの Fileを通して行いますので、全ては Fileのインスタンスを生成したり取得するところから始まります。
この記事では java.io.Fileの以下のことについて紹介・解説を行います。
Fileクラスの「listFilesメソッド」は、指定したディレクトリに含まれるファイルやディレクトリを配列として返します。
主に指定したディレクトリの中身を調べたいときに使用します。
listFilesメソッドは、指定したパス名がディレクトリを示さない場合や、入出力エラーが発生した場合は nullを返します。
listFilesメソッドの使い方
File 変数名 = new File(調べたいディレクトリのパス);
File[] 一覧 = 変数名.listFiles();
listFilesメソッドで一覧を取得するとファイルとディレクトリの判別ができません。
そのためファイルとディレクトリを判別するには、Fileクラスの「isFileメソッド」と「isDirectoryメソッド」を使用します。
isFileメソッドは対象がファイル、isDirectoryメソッドは対象がディレクトリだった場合 trueを返します。
isFileメソッドの使い方
File 変数名 = new File(調べたいオブジェクト);
boolean 判断結果 = 変数名.isFile();
isDirectoryメソッドの使い方
File 変数名 = new File(調べたいオブジェクト);
boolean 判断結果 = 変数名.isDirectory();
listFilesメソッドでディレクトリの中身の一覧を取得し、取得したオブジェクトを「isFileメソッド」と「isDirectoryメソッド」で判別したサンプルコードを確認しましょう。
import java.io.File;
class Sample1 {
public static void main(String[] args) {
File file = new File("D:\\Sample");
File[] list = file.listFiles();
if (list != null) {
for (int i = 0; i < list.length; i++) {
if (list[i].isFile()) {
System.out.println("[F] : " + list[i].toString());
} else if (list[i].isDirectory()) {
System.out.println("[D] : " + list[i].toString());
}
}
} else {
System.out.println("null");
}
}
}
実行結果:
[F] : D:\Sample\abc.txt
[D] : D:\Sample\sub
[F] : D:\Sample\target.txt
[F] : D:\Sample\test00.txt
[F] : D:\Sample\test01.txt
[F] : D:\Sample\test02.txt
ディレクトリの中身の一覧を取得することができました。
取得したものがファイルの場合は [F]、ディレクトリの場合は [D]と表示しています。
listFilesメソッドを使用すれば、ファイルの一覧を取得することができます。
しかしファイルの数が膨大な場合、特定のファイルを見つけるのが困難になります
そのため特定の条件のファイルのみをフィルタリングして取得したいことがあります。
「java.io.FileFilter」または「java.io.FilenameFilter」を使うことでファイルをフィルタリングし、指定した条件のファイルを取得することができます。
ファイル一覧にフィルタをかけるには「java.io.FileFilter」や「java.io.FilenameFilter」のインタフェースを実装したクラスを使用します。
「java.io.FileFilter」や「java.io.FilenameFilter」はどちらも acceptメソッドを持っています。
acceptメソッドは指定されたファイルをリストに含めるか判定します。
指定された抽象パス名をリストに含める場合には true 、含めない場合には false を返します。
java.io.FileFilterはファイル名以外(ファイル名も可)でフィルタリングするインターフェースになります。
ファイル名以外とはFileクラスから取得できるファイルの属性などを指します。
acceptメソッドのパラメータにFileのインスタンスを指定することでファイルの属性などを含めてフィルタリングができます。
Fileクラスから取得できる属性は「ファイルサイズ」、「ファイル更新日時」、「ファイルかどうか」、「ディレクトリかどうか」などがこれに当たります。
listFilesメソッドでFileオブジェクトのリストを取得するとき、引数にFileFilterを設定すると指定されたフィルターを使って対象となるFileオブジェクトのリストを抽出します。
「java.io.FileFilter」を使用するためには「import java.io.FileFilter」をインポートします。
java.io.FileFilterの使い方
import java.io.File;
import java.io.FileFilter;
class FileFilterTextExtension implements FileFilter {
@Override
public boolean accept(File pathname) {
if (pathname.getName().endsWith(".txt")) {
return true;
}
return false;
}
}
public class Sample2_1 {
public static void main(String[] args) {
File dir = new File("D:\\Sample");
File[] files = dir.listFiles(new FileFilterTextExtension());
for (int i = 0; i < files.length; i++) {
if (files[i].isFile()) {
System.out.println(files[i].toString());
}
}
}
}
実行結果:
D:\Sample\abc.txt
D:\Sample\target.txt
D:\Sample\test00.txt
D:\Sample\test01.txt
D:\Sample\test02.txt
Sample2_1ではSample1で一覧取得したファイルのフィルタリングを行っています。
条件としてファイル名の最後が「.txt」であるものを acceptメソッドで許可しています。
その結果、「.txt」の拡張子が付くファイルのみが出力されています。
java.io.FilenameFilterはファイル名でフィルタリングするインターフェースになります。
acceptメソッドのパラメータにFileのインスタンスと対象パスのファイル名かディレクトリ名を指定することでファイル名によるフィルタリングができます。
Fileオブジェクトの配列を取得するときにFilenameFilterを引数に与えると、指定されたファイルをファイル・リストに含めるかどうかをテストします。
「java.io.FilenameFilter」を使用するためには「import java.io.FilenameFilter」をインポートします。
java.io.FilenameFilterを使ったサンプルコードを確認しましょう。
import java.io.File;
import java.io.FilenameFilter;
class FilenameFilterExtension implements FilenameFilter {
@Override
public boolean accept(File pathname, String name) {
if (name.indexOf("a") != -1) {
return true;
}
return false;
}
}
public class Sample2_2{
public static void main(String[] args) {
File dir = new File("D:\\Sample");
File[] files = dir.listFiles(new FilenameFilterExtension());
for (int i = 0; i < files.length; i++) {
if (files[i].isFile()) {
System.out.println(files[i].toString());
}
}
}
}
実行結果:
D:\Sample\abc.txt
D:\Sample\target.txt
Sample2_2ではSample1で一覧取得したファイルのフィルタリングを行っています。
条件としてファイル名に「a」が付くファイルを acceptメソッドで許可しています。
その結果、ファイル名に「a」が付くファイルのみが出力されています。
この記事ではファイル一覧の取得とフィルタについて解説しました。
ファイルの一覧取得をすることでそのディレクトリに何があるのかを瞬時に見ることができます。
また取得した一覧をフィルタリングすることで自由に指定した条件のファイルのみを表示することができます。
探したいファイルやディレクトリを探すの時に役に立つと思います。
ぜひこの記事で学習して覚えましょう。
ファイル操作についてもっと学習したい方は「【Java】java.io.Fileクラスを使えばファイル・ディレクトリ操作ができる!?」の記事も併せて読んでみてください。
【著者】
はじめまして。フォワードソフト株式会社の松倉です。
システムエンジニアとして働き始めたのが2020年4月です。経験や知識がない状態で入社した私は、フォワードソフトの教育研修で一からプログラミングの勉強をしました。教育研修を卒業後、Javaのプログラミングについて初学者向けの記事を共同で制作しています。
知識や経験はまだまだですが、これからいろんな職場で様々な経験しながら勉強していきたいと思っています。
そのような方はぜひ、Workteriaサイトをご利用ください!
定期的にご本人に合う高額案件を紹介
リモートワークなど自由な働き方ができる案件多数
専属エージェントが契約や請求をトータルサポート
こんにちは。エンジニアの新田です!ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。今回は、JSPの標準タグライブラリ「JSTL」について紹介します。Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!関連記事リンク: 【Java】JSPの基本的な構文/【Java】JSPのアクションタグ
こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!そもそもStringとは何?『 String 』... Java言語において文字列のデータ型を指します。基本デ
こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!Stringクラスformatメソッドの文字列整形【java.utilパッケージ】Formatterクラスfo
こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者にも✅、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!文字列を扱う3つのクラス【java.langパッケージ】java.langパッケージの文字列を扱うクラスにはS
こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!プリミティブ型と参照型プログラム開発では型を持った変数を使ってデータのやり取りをしますが、データ型によって仕様