commons-io に見るファイル操作処理のヒント(FilenameUtils編)

公開日: : 最終更新日:2014/05/06 commons-io ,

commons-io の JavaDoc とソースコードを眺めて発見した便利なメソッドや実装のヒントになりそうなスニペットのメモ企画。

今回は FilenameUtils (Commons IO 2.4 API)

FilenameUtils のメソッドは「劇的にとても便利!」ってものではなく、知らなくても困らないけど知ってるとちょっとだけ工数を削減できるってものが多い気がします。
自分で実装しても構わないものばかりですが、Null チェックやブランクの場合の手間を考えると、このライブラリを使ったほうがいいのかなと思います。

icatch-teacher_3509507274_mini

photo credit: woodleywonderworks via photopin cc

目次

1. パスからファイル名だけを切り出す(拡張子も取り除かれる)

  • FilenameUtils#getBaseName(String filename)

あまり用途はないかもしれないですが、自分でコーディングすると面倒なので備忘録としてピックアップしました。

働きは Linux の basename コマンドと同じと思われます。
引数の文字列からパスと拡張子を除いたものを返してくれます。

このメソッドのテストケースがあったのでその内容を乗せておきます。

public void testGetBaseName() {
    assertEquals(null, FilenameUtils.getBaseName(null));
    assertEquals("noseperator", FilenameUtils.getBaseName("noseperator.inthispath"));
    assertEquals("c", FilenameUtils.getBaseName("a/b/c.txt"));
    assertEquals("c", FilenameUtils.getBaseName("a/b/c"));
    assertEquals("", FilenameUtils.getBaseName("a/b/c/"));
    assertEquals("c", FilenameUtils.getBaseName("a\\b\\c"));
    assertEquals("file.txt", FilenameUtils.getBaseName("file.txt.bak"));
}

2. 拡張子を取得する

  • FilenameUtils#getExtension(String filename)

働きはメソッド名の通りです。
このメソッドもテストケースがあったので乗せておきます。

public void testGetExtension() {
    assertEquals(null, FilenameUtils.getExtension(null));
    assertEquals("ext", FilenameUtils.getExtension("file.ext"));
    assertEquals("", FilenameUtils.getExtension("README"));
    assertEquals("com", FilenameUtils.getExtension("domain.dot.com"));
    assertEquals("jpeg", FilenameUtils.getExtension("image.jpeg"));
    assertEquals("", FilenameUtils.getExtension("a.b/c"));
    assertEquals("txt", FilenameUtils.getExtension("a.b/c.txt"));
    assertEquals("", FilenameUtils.getExtension("a/b/c"));
    assertEquals("", FilenameUtils.getExtension("a.b\\c"));
    assertEquals("txt", FilenameUtils.getExtension("a.b\\c.txt"));
    assertEquals("", FilenameUtils.getExtension("a\\b\\c"));
    assertEquals("", FilenameUtils.getExtension("C:\\temp\\foo.bar\\README"));
    assertEquals("ext", FilenameUtils.getExtension("../filename.ext"));
}

3. 拡張子を取り除く

  • FilenameUtils#removeExtension(String filename)

用途が思いつかなかったですが、↑ で「拡張子の取得」を取り上げたので削除も取り上げました。

これもテストケースがあります。
FilenameUtils#basename とは異なりパスは削除しません。

public void testRemoveExtension() {
    assertEquals(null, FilenameUtils.removeExtension(null));
    assertEquals("file", FilenameUtils.removeExtension("file.ext"));
    assertEquals("README", FilenameUtils.removeExtension("README"));
    assertEquals("domain.dot", FilenameUtils.removeExtension("domain.dot.com"));
    assertEquals("image", FilenameUtils.removeExtension("image.jpeg"));
    assertEquals("a.b/c", FilenameUtils.removeExtension("a.b/c"));
    assertEquals("a.b/c", FilenameUtils.removeExtension("a.b/c.txt"));
    assertEquals("a/b/c", FilenameUtils.removeExtension("a/b/c"));
    assertEquals("a.b\\c", FilenameUtils.removeExtension("a.b\\c"));
    assertEquals("a.b\\c", FilenameUtils.removeExtension("a.b\\c.txt"));
    assertEquals("a\\b\\c", FilenameUtils.removeExtension("a\\b\\c"));
    assertEquals("C:\\temp\\foo.bar\\README", FilenameUtils.removeExtension("C:\\temp\\foo.bar\\README"));
    assertEquals("../filename", FilenameUtils.removeExtension("../filename.ext"));
}

4. パスからファイル名だけを切り出す(拡張子は取り除かれない)

  • FilenameUtils#getName(String filename)

FilenameUtils#basename と似た働きをしますが、FilenameUtils#getName は拡張子を残します。パスだけ取り除かれます。

public void testGetName() {
    assertEquals(null, FilenameUtils.getName(null));
    assertEquals("noseperator.inthispath", FilenameUtils.getName("noseperator.inthispath"));
    assertEquals("c.txt", FilenameUtils.getName("a/b/c.txt"));
    assertEquals("c", FilenameUtils.getName("a/b/c"));
    assertEquals("", FilenameUtils.getName("a/b/c/"));
    assertEquals("c", FilenameUtils.getName("a\\b\\c"));
}

5. 拡張子の開始位置を取得する

  • FilenameUtils#indexOfExtension(String filename)

拡張子関連をピックアップしているのでこのメソッドも取り上げました。

拡張子の開始位置を取得するというものです。

public void testIndexOfExtension() {
    assertEquals(-1, FilenameUtils.indexOfExtension(null));
    assertEquals(-1, FilenameUtils.indexOfExtension("file"));
    assertEquals(4, FilenameUtils.indexOfExtension("file.txt"));
    assertEquals(13, FilenameUtils.indexOfExtension("a.txt/b.txt/c.txt"));
    assertEquals(-1, FilenameUtils.indexOfExtension("a/b/c"));
    assertEquals(-1, FilenameUtils.indexOfExtension("a\\b\\c"));
    assertEquals(-1, FilenameUtils.indexOfExtension("a/b.notextension/c"));
    assertEquals(-1, FilenameUtils.indexOfExtension("a\\b.notextension\\c"));
}

6. パスの最後の区切り位置を取得する

  • FilenameUtils#indexOfLastSeparator(String filename)

これまでピックアップしてきたメソッドを使えば不要な気もしましたがついでなので取り上げました。

public void testIndexOfLastSeparator() {
    assertEquals(-1, FilenameUtils.indexOfLastSeparator(null));
    assertEquals(-1, FilenameUtils.indexOfLastSeparator("noseperator.inthispath"));
    assertEquals(3, FilenameUtils.indexOfLastSeparator("a/b/c"));
    assertEquals(3, FilenameUtils.indexOfLastSeparator("a\\b\\c"));
}

7. ファイル名の拡張子が指定のものかを確認する

  • FilenameUtils#isExtension(String filename, String extension)
  • FilenameUtils#isExtension(String filename, String[] extensions)
  • FilenameUtils#isExtension(String filename, Collection<String> extensions)

Web アプリケーションなどでアップロードされたファイルの拡張子が指定のものであるか、といったバリデーションチェックに使えそうだったのでピックアップしました。

どのメソッドもテストケースがありましたが、Collection を受け取るパターンのものを乗せておきます。

public void testIsExtensionCollection() {
    assertFalse(FilenameUtils.isExtension(null, (Collection<String>) null));
    assertFalse(FilenameUtils.isExtension("file.txt", (Collection<String>) null));
    assertTrue(FilenameUtils.isExtension("file", (Collection<String>) null));
    assertFalse(FilenameUtils.isExtension("file.txt", new ArrayList<String>()));
    assertTrue(FilenameUtils.isExtension("file.txt", new ArrayList<String>(Arrays.asList(new String[] {"txt"}))));
    assertFalse(FilenameUtils.isExtension("file.txt", new ArrayList<String>(Arrays.asList(new String[] {"rtf"}))));
    assertTrue(FilenameUtils.isExtension("file", new ArrayList<String>(Arrays.asList(new String[] {"rtf", ""}))));
    assertTrue(FilenameUtils.isExtension("file.txt", new ArrayList<String>(Arrays.asList(new String[] {"rtf", "txt"}))));
    
    assertFalse(FilenameUtils.isExtension("a/b/file.txt", (Collection<String>) null));
    assertFalse(FilenameUtils.isExtension("a/b/file.txt", new ArrayList<String>()));
    assertTrue(FilenameUtils.isExtension("a/b/file.txt", new ArrayList<String>(Arrays.asList(new String[] {"txt"}))));
    assertFalse(FilenameUtils.isExtension("a/b/file.txt", new ArrayList<String>(Arrays.asList(new String[] {"rtf"}))));
    assertTrue(FilenameUtils.isExtension("a/b/file.txt", new ArrayList<String>(Arrays.asList(new String[] {"rtf", "txt"}))));
    
    assertFalse(FilenameUtils.isExtension("a.b/file.txt", (Collection<String>) null));
    assertFalse(FilenameUtils.isExtension("a.b/file.txt", new ArrayList<String>()));
    assertTrue(FilenameUtils.isExtension("a.b/file.txt", new ArrayList<String>(Arrays.asList(new String[] {"txt"}))));
    assertFalse(FilenameUtils.isExtension("a.b/file.txt", new ArrayList<String>(Arrays.asList(new String[] {"rtf"}))));
    assertTrue(FilenameUtils.isExtension("a.b/file.txt", new ArrayList<String>(Arrays.asList(new String[] {"rtf", "txt"}))));
    
    assertFalse(FilenameUtils.isExtension("a\\b\\file.txt", (Collection<String>) null));
    assertFalse(FilenameUtils.isExtension("a\\b\\file.txt", new ArrayList<String>()));
    assertTrue(FilenameUtils.isExtension("a\\b\\file.txt", new ArrayList<String>(Arrays.asList(new String[] {"txt"}))));
    assertFalse(FilenameUtils.isExtension("a\\b\\file.txt", new ArrayList<String>(Arrays.asList(new String[] {"rtf"}))));
    assertTrue(FilenameUtils.isExtension("a\\b\\file.txt", new ArrayList<String>(Arrays.asList(new String[] {"rtf", "txt"}))));
    
    assertFalse(FilenameUtils.isExtension("a.b\\file.txt", (Collection<String>) null));
    assertFalse(FilenameUtils.isExtension("a.b\\file.txt", new ArrayList<String>()));
    assertTrue(FilenameUtils.isExtension("a.b\\file.txt", new ArrayList<String>(Arrays.asList(new String[] {"txt"}))));
    assertFalse(FilenameUtils.isExtension("a.b\\file.txt", new ArrayList<String>(Arrays.asList(new String[] {"rtf"}))));
    assertTrue(FilenameUtils.isExtension("a.b\\file.txt", new ArrayList<String>(Arrays.asList(new String[] {"rtf", "txt"}))));
    
    assertFalse(FilenameUtils.isExtension("a.b\\file.txt", new ArrayList<String>(Arrays.asList(new String[] {"TXT"}))));
    assertFalse(FilenameUtils.isExtension("a.b\\file.txt", new ArrayList<String>(Arrays.asList(new String[] {"TXT", "RTF"}))));
}

8. パスの表記を整える、環境に合わせる

  • FilenameUtils#normalize(String filename)
  • FilenameUtils#normalize(String filename, boolean unixSeparator)

どのような機能なのかを文章で説明するよりも、テストケースを見てもらったほうが早そうなのでテストケースを乗せておきます。

public void testNormalize() throws Exception {
    assertEquals(null, FilenameUtils.normalize(null));
    assertEquals(null, FilenameUtils.normalize(":"));
    assertEquals(null, FilenameUtils.normalize("1:\\a\\b\\c.txt"));
    assertEquals(null, FilenameUtils.normalize("1:"));
    assertEquals(null, FilenameUtils.normalize("1:a"));
    assertEquals(null, FilenameUtils.normalize("\\\\\\a\\b\\c.txt"));
    assertEquals(null, FilenameUtils.normalize("\\\\a"));
    
    assertEquals("a" + SEP + "b" + SEP + "c.txt", FilenameUtils.normalize("a\\b/c.txt"));
    assertEquals("" + SEP + "a" + SEP + "b" + SEP + "c.txt", FilenameUtils.normalize("\\a\\b/c.txt"));
    assertEquals("C:" + SEP + "a" + SEP + "b" + SEP + "c.txt", FilenameUtils.normalize("C:\\a\\b/c.txt"));
    assertEquals("" + SEP + "" + SEP + "server" + SEP + "a" + SEP + "b" + SEP + "c.txt", FilenameUtils.normalize("\\\\server\\a\\b/c.txt"));
    assertEquals("~" + SEP + "a" + SEP + "b" + SEP + "c.txt", FilenameUtils.normalize("~\\a\\b/c.txt"));
    assertEquals("~user" + SEP + "a" + SEP + "b" + SEP + "c.txt", FilenameUtils.normalize("~user\\a\\b/c.txt"));
    
    assertEquals("a" + SEP + "c", FilenameUtils.normalize("a/b/../c"));
    assertEquals("c", FilenameUtils.normalize("a/b/../../c"));
    assertEquals("c" + SEP, FilenameUtils.normalize("a/b/../../c/"));
    assertEquals(null, FilenameUtils.normalize("a/b/../../../c"));
    assertEquals("a" + SEP, FilenameUtils.normalize("a/b/.."));
    assertEquals("a" + SEP, FilenameUtils.normalize("a/b/../"));
    assertEquals("", FilenameUtils.normalize("a/b/../.."));
    assertEquals("", FilenameUtils.normalize("a/b/../../"));
    assertEquals(null, FilenameUtils.normalize("a/b/../../.."));
    assertEquals("a" + SEP + "d", FilenameUtils.normalize("a/b/../c/../d"));
    assertEquals("a" + SEP + "d" + SEP, FilenameUtils.normalize("a/b/../c/../d/"));
    assertEquals("a" + SEP + "b" + SEP + "d", FilenameUtils.normalize("a/b//d"));
    assertEquals("a" + SEP + "b" + SEP, FilenameUtils.normalize("a/b/././."));
    assertEquals("a" + SEP + "b" + SEP, FilenameUtils.normalize("a/b/./././"));
    assertEquals("a" + SEP, FilenameUtils.normalize("./a/"));
    assertEquals("a", FilenameUtils.normalize("./a"));
    assertEquals("", FilenameUtils.normalize("./"));
    assertEquals("", FilenameUtils.normalize("."));
    assertEquals(null, FilenameUtils.normalize("../a"));
    assertEquals(null, FilenameUtils.normalize(".."));
    assertEquals("", FilenameUtils.normalize(""));
    
    assertEquals(SEP + "a", FilenameUtils.normalize("/a"));
    assertEquals(SEP + "a" + SEP, FilenameUtils.normalize("/a/"));
    assertEquals(SEP + "a" + SEP + "c", FilenameUtils.normalize("/a/b/../c"));
    assertEquals(SEP + "c", FilenameUtils.normalize("/a/b/../../c"));
    assertEquals(null, FilenameUtils.normalize("/a/b/../../../c"));
    assertEquals(SEP + "a" + SEP, FilenameUtils.normalize("/a/b/.."));
    assertEquals(SEP + "", FilenameUtils.normalize("/a/b/../.."));
    assertEquals(null, FilenameUtils.normalize("/a/b/../../.."));
    assertEquals(SEP + "a" + SEP + "d", FilenameUtils.normalize("/a/b/../c/../d"));
    assertEquals(SEP + "a" + SEP + "b" + SEP + "d", FilenameUtils.normalize("/a/b//d"));
    assertEquals(SEP + "a" + SEP + "b" + SEP, FilenameUtils.normalize("/a/b/././."));
    assertEquals(SEP + "a", FilenameUtils.normalize("/./a"));
    assertEquals(SEP + "", FilenameUtils.normalize("/./"));
    assertEquals(SEP + "", FilenameUtils.normalize("/."));
    assertEquals(null, FilenameUtils.normalize("/../a"));
    assertEquals(null, FilenameUtils.normalize("/.."));
    assertEquals(SEP + "", FilenameUtils.normalize("/"));
    
    assertEquals("~" + SEP + "a", FilenameUtils.normalize("~/a"));
    assertEquals("~" + SEP + "a" + SEP, FilenameUtils.normalize("~/a/"));
    assertEquals("~" + SEP + "a" + SEP + "c", FilenameUtils.normalize("~/a/b/../c"));
    assertEquals("~" + SEP + "c", FilenameUtils.normalize("~/a/b/../../c"));
    assertEquals(null, FilenameUtils.normalize("~/a/b/../../../c"));
    assertEquals("~" + SEP + "a" + SEP, FilenameUtils.normalize("~/a/b/.."));
    assertEquals("~" + SEP + "", FilenameUtils.normalize("~/a/b/../.."));
    assertEquals(null, FilenameUtils.normalize("~/a/b/../../.."));
    assertEquals("~" + SEP + "a" + SEP + "d", FilenameUtils.normalize("~/a/b/../c/../d"));
    assertEquals("~" + SEP + "a" + SEP + "b" + SEP + "d", FilenameUtils.normalize("~/a/b//d"));
    assertEquals("~" + SEP + "a" + SEP + "b" + SEP, FilenameUtils.normalize("~/a/b/././."));
    assertEquals("~" + SEP + "a", FilenameUtils.normalize("~/./a"));
    assertEquals("~" + SEP, FilenameUtils.normalize("~/./"));
    assertEquals("~" + SEP, FilenameUtils.normalize("~/."));
    assertEquals(null, FilenameUtils.normalize("~/../a"));
    assertEquals(null, FilenameUtils.normalize("~/.."));
    assertEquals("~" + SEP, FilenameUtils.normalize("~/"));
    assertEquals("~" + SEP, FilenameUtils.normalize("~"));
    
    assertEquals("~user" + SEP + "a", FilenameUtils.normalize("~user/a"));
    assertEquals("~user" + SEP + "a" + SEP, FilenameUtils.normalize("~user/a/"));
    assertEquals("~user" + SEP + "a" + SEP + "c", FilenameUtils.normalize("~user/a/b/../c"));
    assertEquals("~user" + SEP + "c", FilenameUtils.normalize("~user/a/b/../../c"));
    assertEquals(null, FilenameUtils.normalize("~user/a/b/../../../c"));
    assertEquals("~user" + SEP + "a" + SEP, FilenameUtils.normalize("~user/a/b/.."));
    assertEquals("~user" + SEP + "", FilenameUtils.normalize("~user/a/b/../.."));
    assertEquals(null, FilenameUtils.normalize("~user/a/b/../../.."));
    assertEquals("~user" + SEP + "a" + SEP + "d", FilenameUtils.normalize("~user/a/b/../c/../d"));
    assertEquals("~user" + SEP + "a" + SEP + "b" + SEP + "d", FilenameUtils.normalize("~user/a/b//d"));
    assertEquals("~user" + SEP + "a" + SEP + "b" + SEP, FilenameUtils.normalize("~user/a/b/././."));
    assertEquals("~user" + SEP + "a", FilenameUtils.normalize("~user/./a"));
    assertEquals("~user" + SEP + "", FilenameUtils.normalize("~user/./"));
    assertEquals("~user" + SEP + "", FilenameUtils.normalize("~user/."));
    assertEquals(null, FilenameUtils.normalize("~user/../a"));
    assertEquals(null, FilenameUtils.normalize("~user/.."));
    assertEquals("~user" + SEP, FilenameUtils.normalize("~user/"));
    assertEquals("~user" + SEP, FilenameUtils.normalize("~user"));
    
    assertEquals("C:" + SEP + "a", FilenameUtils.normalize("C:/a"));
    assertEquals("C:" + SEP + "a" + SEP, FilenameUtils.normalize("C:/a/"));
    assertEquals("C:" + SEP + "a" + SEP + "c", FilenameUtils.normalize("C:/a/b/../c"));
    assertEquals("C:" + SEP + "c", FilenameUtils.normalize("C:/a/b/../../c"));
    assertEquals(null, FilenameUtils.normalize("C:/a/b/../../../c"));
    assertEquals("C:" + SEP + "a" + SEP, FilenameUtils.normalize("C:/a/b/.."));
    assertEquals("C:" + SEP + "", FilenameUtils.normalize("C:/a/b/../.."));
    assertEquals(null, FilenameUtils.normalize("C:/a/b/../../.."));
    assertEquals("C:" + SEP + "a" + SEP + "d", FilenameUtils.normalize("C:/a/b/../c/../d"));
    assertEquals("C:" + SEP + "a" + SEP + "b" + SEP + "d", FilenameUtils.normalize("C:/a/b//d"));
    assertEquals("C:" + SEP + "a" + SEP + "b" + SEP, FilenameUtils.normalize("C:/a/b/././."));
    assertEquals("C:" + SEP + "a", FilenameUtils.normalize("C:/./a"));
    assertEquals("C:" + SEP + "", FilenameUtils.normalize("C:/./"));
    assertEquals("C:" + SEP + "", FilenameUtils.normalize("C:/."));
    assertEquals(null, FilenameUtils.normalize("C:/../a"));
    assertEquals(null, FilenameUtils.normalize("C:/.."));
    assertEquals("C:" + SEP + "", FilenameUtils.normalize("C:/"));
    
    assertEquals("C:" + "a", FilenameUtils.normalize("C:a"));
    assertEquals("C:" + "a" + SEP, FilenameUtils.normalize("C:a/"));
    assertEquals("C:" + "a" + SEP + "c", FilenameUtils.normalize("C:a/b/../c"));
    assertEquals("C:" + "c", FilenameUtils.normalize("C:a/b/../../c"));
    assertEquals(null, FilenameUtils.normalize("C:a/b/../../../c"));
    assertEquals("C:" + "a" + SEP, FilenameUtils.normalize("C:a/b/.."));
    assertEquals("C:" + "", FilenameUtils.normalize("C:a/b/../.."));
    assertEquals(null, FilenameUtils.normalize("C:a/b/../../.."));
    assertEquals("C:" + "a" + SEP + "d", FilenameUtils.normalize("C:a/b/../c/../d"));
    assertEquals("C:" + "a" + SEP + "b" + SEP + "d", FilenameUtils.normalize("C:a/b//d"));
    assertEquals("C:" + "a" + SEP + "b" + SEP, FilenameUtils.normalize("C:a/b/././."));
    assertEquals("C:" + "a", FilenameUtils.normalize("C:./a"));
    assertEquals("C:" + "", FilenameUtils.normalize("C:./"));
    assertEquals("C:" + "", FilenameUtils.normalize("C:."));
    assertEquals(null, FilenameUtils.normalize("C:../a"));
    assertEquals(null, FilenameUtils.normalize("C:.."));
    assertEquals("C:" + "", FilenameUtils.normalize("C:"));
    
    assertEquals(SEP + SEP + "server" + SEP + "a", FilenameUtils.normalize("//server/a"));
    assertEquals(SEP + SEP + "server" + SEP + "a" + SEP, FilenameUtils.normalize("//server/a/"));
    assertEquals(SEP + SEP + "server" + SEP + "a" + SEP + "c", FilenameUtils.normalize("//server/a/b/../c"));
    assertEquals(SEP + SEP + "server" + SEP + "c", FilenameUtils.normalize("//server/a/b/../../c"));
    assertEquals(null, FilenameUtils.normalize("//server/a/b/../../../c"));
    assertEquals(SEP + SEP + "server" + SEP + "a" + SEP, FilenameUtils.normalize("//server/a/b/.."));
    assertEquals(SEP + SEP + "server" + SEP + "", FilenameUtils.normalize("//server/a/b/../.."));
    assertEquals(null, FilenameUtils.normalize("//server/a/b/../../.."));
    assertEquals(SEP + SEP + "server" + SEP + "a" + SEP + "d", FilenameUtils.normalize("//server/a/b/../c/../d"));
    assertEquals(SEP + SEP + "server" + SEP + "a" + SEP + "b" + SEP + "d", FilenameUtils.normalize("//server/a/b//d"));
    assertEquals(SEP + SEP + "server" + SEP + "a" + SEP + "b" + SEP, FilenameUtils.normalize("//server/a/b/././."));
    assertEquals(SEP + SEP + "server" + SEP + "a", FilenameUtils.normalize("//server/./a"));
    assertEquals(SEP + SEP + "server" + SEP + "", FilenameUtils.normalize("//server/./"));
    assertEquals(SEP + SEP + "server" + SEP + "", FilenameUtils.normalize("//server/."));
    assertEquals(null, FilenameUtils.normalize("//server/../a"));
    assertEquals(null, FilenameUtils.normalize("//server/.."));
    assertEquals(SEP + SEP + "server" + SEP + "", FilenameUtils.normalize("//server/"));
}
public void testNormalizeUnixWin() throws Exception {

    // Normalize (Unix Separator)
    assertEquals("/a/c/",    FilenameUtils.normalize("/a/b/../c/", true));
    assertEquals("/a/c/",    FilenameUtils.normalize("\\a\\b\\..\\c\\", true));

    // Normalize (Windows Separator)
    assertEquals("\\a\\c\\", FilenameUtils.normalize("/a/b/../c/", false));
    assertEquals("\\a\\c\\", FilenameUtils.normalize("\\a\\b\\..\\c\\", false));
}

Googleアドセンス用(PC)

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

関連記事

commons-io

commons-io に見るファイル操作処理のヒント(FileUtils編その2)

commons-io の JavaDoc とソースコードを眺めて発見した便利なメソッドや実装のヒント

記事を読む

commons-io

commons-io に見るファイル操作処理のヒント(FileBasedTestCase編)

次のプロジェクトはファイルを頻繁に扱うので、楽を出来ないかと Commons IO の JavaDo

記事を読む

commons-io

commons-io に見るファイル操作処理のヒント(FileUtils編その1)

今回も commons-io の JavaDoc とソースコードを眺めて発見した便利なメソッドや実装

記事を読む

no image

AgeFileFilter を使ったフィルタ処理のサンプル

Commons IO の org.apache.commons.io.filefilter (Com

記事を読む

commons-io

commons-io に見るファイル操作処理のヒント(IOUtils編)

今回も commons-io の JavaDoc とソースコードを眺めて発見した便利なメソッドや実装

記事を読む

icatch-lineiterator_mini

Commons IO の LineIterator#isValidLine メソッドをオーバーライドしたサンプル

CommonsIO にテキストファイルの読み込み処理で役立ちそうなクラスがあったので検証してみました

記事を読む

commons-io

拡張子を指定したフィルタの実装サンプル

Commons-io の FileFilter のサンプルをいくつか書いてみたのでメモしておきます。

記事を読む

icatch-8597609828_ab32aba876_z-resized

SizeFileFilter を使ったフィルタ処理のサンプル

Commons IO の org.apache.commons.io.filefilter (Com

記事を読む

icatch-8969238685_14dd418b01_z-resized

DirectoryFileFilter を使ったフィルタ処理のサンプル

Commons IO の org.apache.commons.io.filefilter (Com

記事を読む

Googleアドセンス用(PC)

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


六 + = 10

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Googleアドセンス用(PC)

icatch-jersey_multi_pathparams
Jerseyの@PathParamはスラッシュの間に複数指定できる

http://hoge-api/user/{id}.{format}

icatch-vagrant_box_customize
VagrantのBoxファイルをカスタマイズして独自のBoxファイルを作成する

配布されている Vagrant の Box ファイルを使って検証環境を

icatch-2015-006-1
バリデーションチェックにJava8のOptionalを使ってスマートに書く(自分比)

Web アプリのバリデーションチェックにアノテーションを使うことが増え

icatch-2015-005-1
ユニットテストの偏りを防ぐ命名規則の付け方

ユニットテスト名に以下の命名規則を付けるようにして二ヶ月ぐらい経った。

icatch-2015-004-1
Vagrantで起動したCentOS上のOctopressをホストOSから確認する設定

タイトルの通りだが、Vagrant を使って起動した CentOS に

→もっと見る

PAGE TOP ↑