【Java】JSPでタグライブラリを使う(JSTL)
こんにちは。エンジニアの新田です!ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。今回は、JSPの標準タグライブラリ「JSTL」について紹介します。Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!関連記事リンク: 【Java】JSPの基本的な構文/【Java】JSPのアクションタグ
Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!
フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。
java.nio.fileパッケージを用いたJava上でのファイル操作は、基本的に以下のような手順になります。
上記のうち、当記事では、Filesクラスで実際のファイル操作を行う前段階となる、Pathオブジェクトを生成する以下の二通りの方法について解説します。
また、java.io.Fileオブジェクトと、java.nio.file.Pathオブジェクトを相互に変換する方法についても紹介します。
java.nio.fileパッケージの概要について知りたい方は、以下の記事を参照して下さい。
【Java】java.nio.fileパッケージ(NIO.2)
また、PathオブジェクトとFilesクラスを使った具体的なファイル操作は、以下の記事を参照して下さい。
【Java】java.nio.fileパッケージの使用例①(ファイルの作成、存在チェック)
【Java】java.nio.fileパッケージの使用例②(移動・コピー、削除)
【Java】java.nio.fileパッケージの使用例③(ファイル属性の取得・変更)
名前が似ててややこしいですが、FileSystemクラスはFileSystemsクラスのメソッドから取得されるクラスです。FIleSystemsクラスからFileSystemクラスを取得し、FIleSystemクラスのgetPathメソッドを呼び出すことで、Pathオブジェクトを生成します。
FileSystemsクラスは、実行している環境でアクセス可能なファイルシステム(デフォルトのファイルシステム)を返す、以下のようなgetDefault()メソッドを定義しています。
メソッド名 | 修飾子と返り値の型 | 説明 |
---|---|---|
getDefault() | static FileSystem | デフォルトのファイルシステムを返します。 |
FileSystem fs = FileSystems.getDefault();
Pathオブジェクトを生成するgetPathメソッドの他、ファイルにアクセスするための様々なメソッドを持ちます。主要なものを以下の表にまとめました。
メソッド名 | 修飾子と返り値の型 | 説明 |
---|---|---|
getPath(String first, String... more) | abstract Path | ファイルやディレクトリの場所を表すPathオブジェクトを生成します。 1つのパス文字列、または分割されたパス文字列を引数として渡しまず。 |
getSeparator() | abstract String | ファイルシステムにおいて、区切り文字(セパレータ)として設定された文字を返します。 |
gerRootDirectories() | abstract Iterable<Path> | ルートディレクトリを返します。 |
//デフォルトのファイルシステムを取得します。
FileSystem fs = FileSystems.getDefault();
//Pathオブジェクトを作成します。getPathメソッドに渡したパスにファイルやディレクトリが存在するかどうかは問いません。
Path path1 = fs.getPath(".\\NIO1.txt");
//ディレクトリの場合は以下のように記述します。
Path path2 = fs.getPath("C:\\JavaWorkspace\\Works");
//文字列を分割して指定することも可能です。
Path path3 = fs.getPath("C:\\JavaWorkspace\\Works\\", "NIO2.txt");
//文字列の最後に区切り文字を入れずに引数に渡すと、カンマの箇所に自動的に区切り文字を補完します。
Path path4 = fs.getPath("C:", "JavaWorkspace", "Works", "NIO3.txt");
//ファイルシステム上での区切り文字を返します。Windows環境で実行すると、通常は「\」が返ります。
String sep = fs.getSeparator()
//getRootDirectories()は、Iterable<path>型の返り値を返すので、
//for-each文を使ってループ処理をするなどして処理を行います。
Iterable<Path> roots = fs.getRootDirectories();
FileSystemクラスのメソッドについて、具体的な使用例を紹介します。以下のサンプルコードでは、
を行っています。getPathメソッドで生成したPathオブジェクトを使った実際のファイル操作については、以下の記事を参照して下さい。
ー
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Path;
public class FileSystemSample {
public static void main(String[] args) {
//デフォルトのファイルシステムを取得します。
FileSystem fs = FileSystems.getDefault();
//ファイルシステムで使われる区切り文字をコンソールに出力します。
System.out.println("このファイルシステムの区切り文字は " + fs.getSeparator() + " です。");
//現在ファイルシステムで使用しているルートディレクトリをすべてコンソールに出力します。
for (Path root : fs.getRootDirectories()) {
System.out.println(root);
}
}
}
上記のコードを実行すると、コンソールに以下のように出力されます。
このファイルシステムの区切り文字は \ です。
C:\
D:\
E:\
F:\
Pathsクラスは、Pathオブジェクトを生成するstaticメソッドのみを実装したクラスになります。FilesystemクラスのgetPathメソッドを呼び出すよりも短く記述が出来るので、普段はこちらを使うのが良いでしょう。
メソッド名 | 修飾子と返り値の型 | 説明 |
---|---|---|
get(String first, String... more) | public static Path | ファイルやディレクトリの場所を表すPathオブジェクトを生成します。 1つのパス文字列、または分割されたパス文字列を引数として渡しまず。 |
FilesystemクラスのgetPathメソッドとほぼ同様の使い方をします。
//Pathオブジェクトを作成します。getメソッドに渡したパスにファイルやディレクトリが存在するかどうかは問いません。
Path path1 = Paths.get(".\\NIO1.txt");
//ディレクトリの場合は以下のように記述します。
Path path2 = Paths.get("C:\\JavaWorkspace\\Works");
//文字列を分割して指定することも可能です。
Path path3 = Paths.get("C:\\JavaWorkspace\\Works\\", "NIO2.txt");
//文字列の最後に区切り文字を入れずに引数に渡すと、カンマの箇所に自動的に区切り文字を補完します。
Path path4 = Paths.get("C:", "JavaWorkspace", "Works", "NIO3.txt");
java.io.Fileオブジェクトと、java.nio.file.Pathオブジェクトは相互に変換可能です。
FileオブジェクトからPathオブジェクトに変換するには、FileクラスのtoPathメソッドを使います。
メソッド名 | 修飾子と返り値の型 | 説明 |
---|---|---|
toPath() | public Path | FileオブジェクトからPathオブジェクトを返します。 |
//FileオブジェクトをPathオブジェクトに変換します。
File file = new File("ファイルのパス");
Path path = file.toPath();
PathオブジェクトからFileオブジェクトに変換するには、PathインターフェースのtoFileメソッドを使います。
メソッド名 | 修飾子と返り値の型 | 説明 |
---|---|---|
toFile() | File | PathオブジェクトからFileオブジェクトを返します。 |
//PathオブジェクトをFileオブジェクトに変換します。
Path path = Paths.get("ファイルのパス");
File file = path.toFile();
当記事では、Pathオブジェクトの生成方法について、2通りの方法を解説しました。また、FileオブジェクトとPathオブジェクトを相互に変換する方法について解説しました。
java.nio.filesパッケージは、ファイルやディレクトリの場所のみを示すPathオブジェクトと、ファイル操作を行うメソッドを集めたFilesクラスというように分かれています。java.ioパッケージと比べて仕組みは複雑に見えますが、java.nio.filesパッケージには便利なメソッドが多く用意されており、実際のコードは簡潔に書くことが出来ます。まずはjava.nio.filesパッケージにおけるファイル操作の起点となるPathオブジェクトについて理解すれば、一見難しいように見えるNIO.2についても理解がしやすいと思います。
関連記事:
【Java】java.nio.fileパッケージ(NIO.2)
【Java】java.nio.fileパッケージの使用例①(ファイルの作成、存在チェック)
【Java】java.nio.fileパッケージの使用例②(移動・コピー、削除)
【Java】java.nio.fileパッケージの使用例③(ファイル属性の取得・変更)
【著者】
フォワードソフト株式会社のエンジニア。Java、Python、JavaScript、C#などの言語の他、クラウドやネットワーク技術を勉強しています。PythonやVBAを使った自動化で楽をする方法を考えるのが好きです。 最近はジェネレーティブAIの業務利用に関する検証を行っています。 資格を通じて知識を吸収することを心がけており、セキュリティスペシャリスト、データベーススペシャリスト、応用情報技術者、Oracle Certified Java Programmer Gold SE 11、Pythin3 エンジニア認定試験、HTML5プロフェッショナル認定試験レベル2、AWSプラクティショナーなどの情報資格を保有しています。
そのような方はぜひ、Workteriaサイトをご利用ください!
定期的にご本人に合う高額案件を紹介
リモートワークなど自由な働き方ができる案件多数
専属エージェントが契約や請求をトータルサポート
こんにちは。エンジニアの新田です!ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。今回は、JSPの標準タグライブラリ「JSTL」について紹介します。Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!関連記事リンク: 【Java】JSPの基本的な構文/【Java】JSPのアクションタグ
こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!そもそもStringとは何?『 String 』... Java言語において文字列のデータ型を指します。基本デ
こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!Stringクラスformatメソッドの文字列整形【java.utilパッケージ】Formatterクラスfo
こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者にも✅、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!文字列を扱う3つのクラス【java.langパッケージ】java.langパッケージの文字列を扱うクラスにはS
こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!プリミティブ型と参照型プログラム開発では型を持った変数を使ってデータのやり取りをしますが、データ型によって仕様