2013-01-10 84 views
8

我試圖根據我發現的一個示例在用戶目錄中打開一個javafx FileChooser here在用戶目錄中打開一個javafx FileChooser

下面是簡單的代碼,我使用的片段:

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 

T我不知道爲什麼我要獲得警告信息。

UPDATE:

這似乎是JavaFX中的一個錯誤:https://bugs.openjdk.java.net/browse/JDK-8098160 (你需要創建一個免費帳戶吉拉看到錯誤報告)。 這個問題發生在OSX上,不知道其他平臺。

回答

0

嘗試:

String currentDir = System.getProperty("user.home"); 
file = new File(currentDir); 
fc.setInitialDirectory(file); 
+0

試過其他操作系統(未測試)不同,但問題仍然存在 – Sergio

+0

是你能解決這個問題呢? ?我遇到了同樣的問題。 – lochi

+0

hi @lochi,看到我對問題的更新 – Sergio

6

這是我落得這樣做,它的工作就像一個魅力。

此外,請確保您的文件夾在嘗試閱讀時可以訪問(良好做法)。您可以創建該文件,然後檢查是否可以讀取它。完整的代碼將如下所示,如果您無法訪問用戶目錄,則默認爲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,但可能會在

0
@FXML private Label label1; //total file path print 
@FXML private Label labelFirst; //file dir path print 

private String firstPath; //dir path save 

public void method() { 
    FileChooser fileChooser = new FileChooser(); 
    if (firstPath != null) { 
     File path = new File(firstPath); 
     fileChooser.initialDirectoryProperty().set(path); 
    } 
    fileChooser.getExtensionFilters().addAll(
      new ExtensionFilter("Text Files", "*.txt"), 
      new ExtensionFilter("Image Files", "*.png", "*.jpg", "*.gif"), 
      new ExtensionFilter("Audio Files", "*.wav", "*.mp3", "*.aac"), 
      new ExtensionFilter("All Files", "*.*")); 
    File selectFile = fileChooser.showOpenDialog(OwnStage); 
    if (selectFile != null){ 
     String path = selectFile.getPath(); 
     int len = path.lastIndexOf("/"); //no detec return -1 
     if (len == -1) { 
      len = path.lastIndexOf("\\"); 
     } 
     firstPath = path.substring(0, len); 
     labelFirst.setText("file path : " + firstPath); 
     label1.setText("First File Select: " + path); 
    } 

    } 
相關問題