java.io.File
クラスは広く使用されていますが、Java SE 7 以降、Java でのファイルやディレクトリの操作には java.nio.file.Path
ほど推奨されない制限があります。Oracle は、一般的な例外、オペレーティング間での一貫性のない動作などの問題を強調しています。システム、シンボリック リンクのサポートの欠如、大規模なディレクトリでのパフォーマンスの問題、安全でないディレクトリ トラバーサル。
クラス java.nio.file
を備えた Path
パッケージは、より堅牢で最新のソリューションを提供します。 実際の比較を見てみましょう:
1.ファイルの削除:
java.io.File
: file.delete()
経由で削除すると、ブール値のみが返され、エラーの詳細は返されません。<code class="language-java">File file = new File("example.txt"); System.out.println("Arquivo excluído com sucesso: " + file.delete());</code>
java.nio.file.Path
: Files.delete()
は特定の例外をスローし、より正確なエラー処理を可能にします (例: NoSuchFileException
、AccessDeniedException
)。<code class="language-java">Path path = Path.of("example.txt"); try { Files.delete(path); } catch (IOException e) { System.err.println("Erro ao excluir arquivo: " + e.getMessage()); }</code>
2.ファイル名の変更:
java.io.File
: oldFile.renameTo(newFile)
はシステム間で一貫性のない動作を示します。<code class="language-java">File oldFile = new File("old_name.txt"); File newFile = new File("new_name.txt"); System.out.println("Renomeou com sucesso: " + oldFile.renameTo(newFile));</code>
java.nio.file.Path
: Files.move(oldPath, newPath)
は例外処理を提供します (例: FileAlreadyExistsException
)。<code class="language-java">Path oldPath = Path.of("old_name.txt"); Path newPath = Path.of("new_name.txt"); try { Files.move(oldPath, newPath); System.out.println("Arquivo renomeado com sucesso."); } catch (IOException e) { System.err.println("Erro ao renomear arquivo: " + e.getMessage()); }</code>
段階的な移行:
java.io.File
を使用する既存のプロジェクトの場合、file.toPath()
メソッドを使用して File
を Path
に変換することで段階的に移行できます。
<code class="language-java">File file = new File("example.txt"); Path path = file.toPath(); try { Files.delete(path); } catch (IOException e) { System.err.println("Erro ao excluir arquivo: " + e.getMessage()); }</code>
java.nio.file.Path
の採用により、より堅牢で安全で移植可能なコードが提供されます。 学習には時間がかかりますが、長期的なメリットは移行のコストを上回ります。
参考文献:
以上が「Java を捕まえた!」: なぜ java.io.File を残すのですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。