私はJavaを初めて使いFXアプリケーションを構築しようとしています。私の関数の1つは、特定の文字列を他の文字列に置き換えることを目的としていますターゲットファイルの絶対パスを定義している限り、スクリプトは正常に動作しますが、相対パスで作業するとブレークします。Java Paths.get .... readAllBytes(path))が相対パスで動作しない
"readAllBytes"メソッドには問題があります。このメソッドは完全なパスでのみ動作します。しかし、フォルダの場所が変わるため、相対パスが必要です。
対象ファイルはプロジェクトフォルダにあります。絶対パスを必要としない、ファイルコンテンツを読み取るために使用できる他の方法はありますか?
ありがとうございます。ファイルが指定した場所に存在しないことを意味していjava.nio.file.NoSuchFileException: Target.fxml
if (checkbox.isSelected()) {
//this works .....
Path path = Paths.get("//home/../../../../Target.fxml")
Charset charset = StandardCharsets.UTF_8;
String content = new String(Files.readAllBytes(path));
content = content.replaceAll("text_old" , "text_new");
Files.write(path, content.getBytes(charset));
//this doesn't work...
Path path = Paths.get("Target.fxml");
Caused by: java.nio.file.NoSuchFileException: Target.fxml
あなたが行っていることを知るために十分なコードを投稿できますか? 「コンテンツ」とは何ですか?そして、完全なスタックトレースを質問に投稿してください。 –
タイトルは、 "相対パスで動作していない" *とし、まず、相対パスで動作する*ヒント:* '" Target.fxml "'は相対パスです。したがって、現在のディレクトリでファイルを見つけることができます。次に、それは絶対パスで動作すると言います。次に、ClassLoader.getResource()で動作しないと言います。ファイルはクラスパス上にあるはずですか?クラスパス上の現在のディレクトリですか? – Andreas
皆さん、ご援助いただき、ありがとうございます。上記のアップデートをご覧ください。 – rainer