ファイルパス (path)

ファイルパスの取り扱い。

Java

import java.io.File;
import java.io.IOException;
...
File inFile, outFile;
String outStr;

// ◆ パス結合

// "subdir" + "subsubdir" + "base" → "subdir/subsubdir/base"
outFile = new File(new File("subdir", "subsubdir"), "base");

// ◆ ディレクトリ, 末端ファイル名分離

inFile = outFile;

// "subdir/subsubdir/base" → "subdir/subsubdir"
outFile = inFile.getParentFile();
outStr = inFile.getParent();

// "subdir/subsubdir/base" → "base"
outStr = inFile.getName();

// ◆ 絶対パス化と正規化

// 元パス "subA/../subB/./base"
inFile = new File(new File(new File(new File("subA", ".."), "subB"), "."), "base");

// 絶対パス化
// "subA/../subB/./base"
// → カレントディレクトリの絶対パス/subA/../subB/./base
outFile = inFile.getAbsoluteFile();
outStr  = inFile.getAbsolutePath();

// 絶対正規パス化
// "subA/../subB/./base"
// → カレントディレクトリの絶対パス/subB/base
try {
	outFile = inFile.getCanonicalFile();
	outStr  = inFile.getCanonicalPath();
} catch (IOException e) {}

メニューに戻る

Python

import os.path

# ◆ パス結合

# "subdir" + "subsubdir" + "base" → "subdir/subsubdir/base"
outStr = os.path.join("subdir", "subsubdir", "base")   # 1つ以上指定可能

# ◆ ディレクトリ, 末端ファイル名分離

inStr = outStr

# "subdir/subsubdir/base" → "subdir/subsubdir"
outStr = os.path.dirname(inStr)

# "subdir/subsubdir/base" → "base"
outStr = os.path.basename(inStr)

# "subdir/subsubdir/base" → ("subdir/subsubdir", "base")
(dir,base) = os.path.split(inStr)

# ◆ 絶対パス化と正規化

# 元パス "subA/../subB/./base"
inStr = os.path.join("subA", "..", "subB", ".", "base");

# 絶対正規パス化
# "subA/../subB/./base"
# → カレントディレクトリの絶対パス/subB/base
outStr = os.path.abspath(inStr)

# 正規パス化
# "subA/../subB/./base"
# → subB/base
outStr = os.path.normpath(inStr)

メニューに戻る

Ruby

# ◆ パス結合

# "subdir" + "subsubdir" + "base" → "subdir/subsubdir/base"
outStr = File.join("subdir", "subsubdir", "base")   # 1つ以上指定可能

# ◆ ディレクトリ, 末端ファイル名分離

inStr = outStr

# "subdir/subsubdir/base" → "subdir/subsubdir"
outStr = File.dirname(inStr)

# "subdir/subsubdir/base" → "base"
outStr = File.basename(inStr)

# "subdir/subsubdir/base" → ["subdir/subsubdir", "base"]
array = File.split(inStr)  # array[0] = dirname, array[1] = basename
(dir,base) = File.split(inStr)

# ◆ 絶対パス化と正規化

# 元パス "subA/../subB/./base"
inStr = File.join("subA", "..", "subB", ".", "base")

# 絶対正規パス化
# "subA/../subB/./base"
# → カレントディレクトリの絶対パス/subB/base
outStr = File.expand_path(inStr)

メニューに戻る

Shell

# ◆ パス結合

# "subdir" + "subsubdir" + "base" → "subdir/subsubdir/base"
outStr="subdir""/""subsubdir""/""base"

# ◆ ディレクトリ, 末端ファイル名分離

inStr=$outStr

# "subdir/subsubdir/base" → "subdir/subsubdir"
outStr=`dirname $inStr`

# "subdir/subsubdir/base" → "base"
outStr=`basename $inStr`

# ◆ 絶対パス化と正規化

# 元パス
inStr="subA/../subB/./base"

# 絶対パス化
# "subA/../subB/./base"
# → カレントディレクトリの絶対パス/subA/../subB/./base
outStr=`pwd`"/$inStr"

メニューに戻る