【Java】getName()を使ってパスからファイル名を取得する!
パスからファイル名を取得するにはFileクラスのgetName()メソッドを使用します。
Fileクラスは、Javaにおいてローカルディレクトリに存在するファイルやディレクトリについての多様な操作を実現するためのクラスであり、そのクラスで用意されているgetName()メソッドは、パスからファイル名を取得するメソッドとなります。
また、FileクラスにはgetName()メソッドに似た、getPath()メソッドやgetParent()メソッドなどがありますのが使い方が異なりますので注意してください。
今回はFileクラスのgetName()メソッドを使ってパスからファイル名を取得します。
目次
getName()メソッドとは
FileクラスのgetName()メソッドとは、ファイルの名前を文字列で取得するためのメソッドとなります。
getName()メソッドの書き方
FileクラスのtransferFrom()メソッドの構文は下記となります。
1 2 3 |
import java.io.File; Fileオブジェクト.getName(); |
Fileクラスのメソッドを使用するために、まずはFileクラスをインポートします。
そして、getName()の前にFileオブジェクトを指定することで、指定したFileオブジェクトを文字列で取得することができます。
パスからファイル名を取得するサンプルコード
パスからファイル名を取得するサンプルコードを紹介します。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// パスからファイル名を取得するクラス import java.io.File; public class Main { public static void main(String[] args) throws Exception { // ファイル名を取得するパス File file = new File("temp", "targetFile.txt"); // パスを表示する System.out.println( "パス:" + file.toString()); // ファイル名を取得する String fileName = file.getName(); // 取得したファイル名を表示する System.out.println("ファイル名:" + fileName); } } |
出力結果
パス:temp/targetFile.txt
ファイル名:targetFile.txt
コンソールから実行する場合はレントディレクトリに「srcFile.txt」を用意します。
Eclipseで実行酢する場合は、プロジェクト直下に「srcFile.txt」を用意します。
その状態でMain.javaを実行すると、「scrFile.txt」をコピーした「targetFile.txt」が作成されます。
また、ChannelクラスのtransferTo()メソッドを使用しても同様の結果となります。
今回のポイント
getName()でバスからファイル名を取得
バスからファイル名を取得するにはFileクラスのgetName()メソッドを使用する
FileクラスのgetName()メソッドを呼び出すことで、パスからディレクトリ名を除いたファイル名を取得することができます。
対象となるパスがディレク 後のディレクトリ名を取得します。
なお、取得したファイル名には、拡張子も含まれます。
補足
NIO.2を使用してパスからファイル名を取得するには
PathクラスのgetFileName()メソッドを使用すると、パスからファイル名を取得できます。
また、NIO.2とはJava7で導入された「java.nio.file」パッケージとそのサブパッケージとを合わせたものをいいます。
また、PathクラスのgetNameCount()メソッドでパスをパス区切り文字で分割した際の要素数を取得し、PathクラスのgetName()メソッドでその最後の要素を取得することでもファイル名を取得することができます。
なお、パスをパス区切り文字で分割した場合は、Windows系のドライブ文字(「C:」など)は含まれません。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
// パスからファイル名を取得する import java.nio.file.FileSystems; import java.nio.file.Path; public class Main { public static void main(String[] args) throws Exception { // 対象パスのPathを設定する Path path1 = FileSystems.getDefault().getPath( "temp/targetFile.txt"); //パスを表示する System.out.println("パス:" + path1); // ファイル名を取得する Path path2 = path1.getFileName(); // 取得したファイル名を表示する System.out.println("ファイル名:" + path2); //「Path#getNameCount」「Path#getName」でファイル名を取得する System.out.println( "ファイル名:" + path1.getName(path1.getNameCount() - 1)); } } |
出力結果
パス:temp/targetFile.txt
ファイル名:targetFile.txt
ファイル名:targetFile.txt
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。