ボンジュール・マドモアゼル

本サイトの情報は自己責任にてご利用下さい。

[Java] FileクラスのrenameToメソッドは新しい名前をオブジェクトに反映できない。

 
renameTo メソッドに渡される新しい名前は、File オブジェクトに反映されない。
File f = new File("foo");

f.renameTo(new File("bar"));
を実行して renameTo が成功したとしても f.getName() は "foo"を返す。
これは Java の仕様。
JavaのFileクラスは不変(immutable)クラスという点に関する注意点

以下、検証用コード。
参考までに言うと Eclipse はデフォルトではアサーション機能が有効になっていない。
import java.io.*;


public class TestFileRenameTo {
public static void main(String[] args) throws IOException {
File a = new File("foo");
File b = new File("bar");
a.createNewFile();
b.delete();
assert a.exists() && !b.exists();
if (a.renameTo(b)) {
assert !a.exists() && b.exists();
assert a.getName().equals("foo");
System.out.println(a.getName());
}
}
}

  1. 2012/04/07(土) 07:34:25|
  2. Java|
  3. トラックバック(-)|
  4. コメント:0
<<VBScript 文字列の繰り返し | ホーム | Windows Update (KB2675157) 80070011 エラー>>

コメント

コメントの投稿

管理者にだけ表示を許可する

画像の文字を半角数字で下記ボックスに記入ください。
文字が読みにくい場合はブラウザの更新をすると新しい文字列が表示されます。