[解決済み] WindowsでFile.renameTo()の代替となる信頼性の高いツールは?
質問
Java の
File.renameTo()
は、特にWindowsでは問題があるようです。
として
API ドキュメント
にはこうあります。
このメソッドの動作の多くの側面は メソッドの動作の多くの側面は、本質的に プラットフォーム依存です。リネーム 操作は ファイルをあるファイルシステムから別のファイルシステムに移動できないかもしれません。 アトミックでない可能性があり、また を持つファイルが既に存在する場合は成功しないかもしれません。 のファイルがすでに存在する場合は成功しないかもしれません。 が存在する場合,成功しないかもしれない.戻り値は,常に をチェックする必要があります。 リネームが成功したことを確認するために
私の場合、アップグレード手順の一部として、ギガバイト単位のデータ (多くのサブディレクトリとさまざまなサイズのファイル) を含むディレクトリを移動 (名前の変更) する必要があります。移動は常に同じパーティション/ドライブ内で行われるので、ディスク上のすべてのファイルを物理的に移動する本当の必要はありません。
そこで べきではない は移動するディレクトリのコンテンツに対していかなるファイル ロックも存在しないはずですが、それでも、かなりの頻度で renameTo() はその仕事を行うことができず、false を返します。(おそらく、いくつかのファイル ロックが Windows 上で多少恣意的に期限切れになるのではないかと、私は推測しています)。
現在、私はコピー & 削除を使用するフォールバック メソッドを持っています。 たくさん を要することがあるからです。私はまた、潜在的に、何時間も待つことを避けるために、ユーザーが手動でフォルダを移動できるという事実を単に文書化することを検討しています。しかし、正しい方法は、明らかに自動的で迅速なものでしょう。
そこで、私の質問です。 Windows 上で Java を使って素早く移動/名前変更を行うための、代替の信頼できるアプローチをご存知ですか? JDKまたはいくつかの外部ライブラリで。または、もしあなたが 簡単な を検出し、任意のフォルダのファイルロックを解除する方法を知っている場合。 そのすべてのコンテンツ (おそらく何千もの個々のファイル) のために、あらゆるファイル ロックを検出し解放する方法があれば、それもよいでしょう。
編集
: このケースでは、単に
renameTo()
で済んでいるようです。
この回答
.
どのように解決するのですか?
また
Files.move()
メソッドも参照してください。
例です。
String fileName = "MyFile.txt";
try {
Files.move(new File(fileName).toPath(), new File(fileName).toPath(), java.nio.file.StandardCopyOption.REPLACE_EXISTING);
} catch (IOException ex) {
Logger.getLogger(SomeClass.class.getName()).log(Level.SEVERE, null, ex);
}
関連
-
Junitのユニットテストはjava.lang.Testを報告します。
-
Javaがエラーで実行される、選択が起動できない、最近起動したものがない
-
linux ant Resolve error: main class not found or couldn't be loaded org.apache.tools.ant.launcher.
-
[解決済み] Windowsにpipをインストールするにはどうしたらいいですか?
-
[解決済み] Windows での Git リポジトリのディレクトリを無視する
-
[解決済み] WindowsのCMDで1行に2つのコマンドを実行するにはどうしたらいいですか?
-
[解決済み] Git for Windows でファイル名が長すぎる
-
[解決済み] Node.js/Windowsのエラーです。ENOENT, stat 'C:\Users﹑RTAppData﹑Roaming﹑npm'.
-
[解決済み] Windows PowerShellの環境変数を設定する
-
[解決済み】WindowsでTCPまたはUDPポートをリッスンしているプロセスを見つけるにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
プロジェクトの依存関係を解決できない。
-
java マイクロソフト払い戻し予期せぬサーバーからのファイルの終了
-
Junitのユニットテストはjava.lang.Testを報告します。
-
List list = new ArrayList(); Error: ArrayList は型に解決できません。
-
Java appears タイプEを囲むインスタンスがアクセスできない。
-
JNIエンカウンターエラー:構造体またはユニオンではない何かでメンバー 'FindClass' のリクエスト
-
Server Tomcat v9.0 Server at localhost の起動に失敗しました。
-
Web Project JavaでPropertiesファイルを読み込むと、「指定されたファイルがシステムで見つかりません」というソリューションが表示されます。
-
switch case文のcaseの後の列挙定数は列挙型なし
-
ApiModel と @ApiModelProperty の使用法