【Java】パス・ファイルの扱い

■ はじめに

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;
    }
}

関連記事