■ はじめに
Java に関するパス・ファイルの扱いについて書き溜めていく。
目次
【1】ファイル名を取得する 1)正規表現で実装したサンプル 2)別解 【2】拡張子を取得 / 変更する
【1】ファイル名を取得する
import java.io._ File in = new File(inputData); // フルパスからファイル名だけを取得 String fileName = in.getName();
【2】拡張子を取得 / 変更する
1)正規表現で実装したサンプル
* 下記の関連記事を参照のこと。
2)別解
studyMain.java(メイン)
import util.*; public class studyMain { public static void main(String args[]) { utilTool obj = new utilTool(); String outputData = obj.changeExtention("C:\\xxx.xml", "txt" ); System.out.println("Result : " + outputData ); return; } }
utilTool.java
package util; import java.io.File; public class utilTool { public utilTool() { } /** * 拡張子を取得する * * @param filePath 取得したいパスまたはファイル名 * @return 拡張子(nullの場合は、エラー) * @see xmlファイル(xxx.xml)から、拡張子xmlを取得したい場合 * @see 使用例<ef><bc><9a>String outputData = changeExtention("C:\\xxx.xml", "txt"); * @see ただし<e3><80><81>実際に「C:\\xxx.xml」がないと、エラーを返す */ public static String getExtention(String filePath) { String result = null; /* 引数チェック */ if (filePath == null) { return null; } /* 取得したいデータinputDataが、ファイルかどうかを確認 */ File inFile = new File(filePath); if (!inFile.isFile()) { return null; } String fileName = inFile.getName(); // フルパスからファイル名だけを取得 /* 拡張子前の"."がどの位置にあるかどうかを取得する */ int postion = fileName.lastIndexOf("."); if (postion != -1) { /* 拡張子ある場合 */ result = fileName.substring(postion + 1); } else { /* 拡張子ない場合(実装依存) */ result = ""; // 拡張子をそのまま付加 } return result; } /** * 拡張子を変更します。 * * @param inputFilePath 入力ファイルのパス(絶対パス) * @param extention 変更したい拡張子 * @return returnVal 変更した拡張子のファイルパス(エラーの場合、nullを返す) * @see 入力ファイル(ここではD:\dicom.dcm)を、拡張子jpgに変えたい場合 * @see => String outputFilePath = common.util.changeExtension("D:\\dicom.dcm", "jpg"); * @see この場合<e3><80><81>戻り値(ここではoutputFilePath)には「D:\dicom.jpg」が格納される * @see なお<e3><80><81>本メソッドを使用する前に、必ず入力ファイルが、ファイルかどうか(isFile())を行っておくこと * @version 0.0.1 */ public static String changeExtension(String inputData, String extention) { String returnVal = null; /* 引数チェック */ if (inputData == null || extention == null) { return null; // 引数がnullのため、エラーを返す } File in = new File(inputData); String fileName = in.getName(); // フルパスからファイル名だけを取得 /* ファイル名の拡張子の文字位置を取得 */ int postion = fileName.lastIndexOf("."); if (postion == -1) { /* ファイル名に拡張子がない場合 */ returnVal = inputData + "." + extention; // } else { /* ファイル名に拡張子がある場合 */ // ファイル名から拡張子を取り除いた文字例を取得 int postionOfFullPath = inputData.lastIndexOf("."); // フルパスの String pathWithoutExt = inputData.substring(0, postionOfFullPath); returnVal = pathWithoutExt + "." + extention; } return returnVal; } }