-3

私のマシンlinuxにopenjdk-6-jdkをインストールしましたが、関数renameToが機能しませんか?この問題についてアイデアがありますか?

ありがとうございました。

4

1 に答える 1

1

実行時に、プログラムはファイルの名前を変更しません(ファイルを移動しません)。プログラムが新しい宛先でファイルを使用するときにエラーが発生します(コードjavaにコマンドlinux mvを挿入すると、動作します!! !)

これらの症状に基づいて、あるファイルシステムから別のファイルシステムにファイルの名前を変更しようとしていると言えます。

「mv」コマンドはこれを実行できますが、File.renameTo(...)実行できません。(ちなみに、「名前の変更」システムコールもできません。)これはOpenJDKのバグではありません。むしろ、それは文書化された制限です。javadocはこれを言います:

「このメソッドの動作の多くの側面は、本質的にプラットフォームに依存します。名前変更操作は、ファイルをあるファイルシステムから別のファイルシステムに移動できない可能性があり、アトミックではない可能性があり、宛先が抽象化されたファイルの場合は成功しない可能性がありますパス名はすでに存在します。名前変更操作が成功したことを確認するために、戻り値を常にチェックする必要があります。

Filesクラスは、プラットフォームに依存しない方法でファイルを移動または名前変更するためのmoveメソッドを定義していることに注意してください。」


他のマシンで動作するという事実は、移動のソースと宛先が同じファイルシステムにあるという事実に単純に起因している可能性があります。

于 2012-10-09T12:46:50.557 に答える