9

ここで見つけた例に従って、ユーザーディレクトリでjavafxFileChooserを開こうとしています。

これが私が使用している単純なコードの断片です:

FileChooser fc = new FileChooser();
fc.setTitle("Open Dialog");
String currentDir = System.getProperty("user.dir") + File.separator;
file = new File(currentDir);
fc.setInitialDirectory(file);

ただし、この警告が表示され続けます(完全なファイルパスが切り捨てられています)。

Invalid URL passed to an open/save panel: '/Users/my_user'.  Using 'file://localhost/Users/my_user/<etc>/' instead.

fileオブジェクトが既存のディレクトリであり、次の行を追加していることを確認しました。

System.out.println(file.exists()); //true
System.out.println(file.isDirectory()); //true

それでは、なぜ警告メッセージが表示されるのかわかりません。

アップデート:

これはJavaFXのバグのようです:https ://bugs.openjdk.java.net/browse/JDK-8098160 (バグレポートを表示するには無料のJiraアカウントを作成する必要があります)。この問題はOSXで発生し、他のプラットフォームについてはわかりません。

4

3 に答える 3

10

これが私がやったことであり、それは魅力のように機能しました。

また、フォルダーを読み取ろうとするときは、フォルダーにアクセスできることを確認してください (良い方法です)。ファイルを作成してから、それを読み取れるかどうかを確認できます。完全なコードは次のようになり、c:ユーザー ディレクトリにアクセスできない場合はデフォルトでドライブになります。

FileChooser fileChooser = new FileChooser();

//Extention filter
FileChooser.ExtensionFilter extentionFilter = new FileChooser.ExtensionFilter("CSV files (*.csv)", "*.csv");
fileChooser.getExtensionFilters().add(extentionFilter);

//Set to user directory or go to default if cannot access
String userDirectoryString = System.getProperty("user.home");
File userDirectory = new File(userDirectoryString);
if(!userDirectory.canRead()) {
    userDirectory = new File("c:/");
}
fileChooser.setInitialDirectory(userDirectory);

//Choose the file
File chosenFile = fileChooser.showOpenDialog(null);
//Make sure a file was selected, if not return default
String path;
if(chosenFile != null) {
    path = chosenFile.getPath();
} else {
    //default return value
    path = null;
}

これは Windows と Linux で機能しますが、他のオペレーティング システムでは異なる場合があります (テストされていません)。

于 2013-01-17T20:16:46.450 に答える
1

試す:

String currentDir = System.getProperty("user.home");
file = new File(currentDir);
fc.setInitialDirectory(file);
于 2013-01-12T02:41:51.493 に答える