2013-01-10 8 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 

टी मुर्गी मुझे नहीं पता कि मुझे चेतावनी संदेश क्यों मिल रहा है।

अद्यतन: https://bugs.openjdk.java.net/browse/JDK-8098160 (आप एक नि: शुल्क Jira खाते बग रिपोर्ट को देखने के लिए बनाने की जरूरत):

यह JavaFX में एक बग हो रहा है। यह समस्या ओएसएक्स में होती है, अन्य प्लेटफार्मों के बारे में कोई जानकारी नहीं है।

उत्तर

0

प्रयास करें:

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

की कोशिश की पर अलग हो सकता है लेकिन समस्या अभी भी वहाँ – Sergio

+0

है आप इस समस्या को हल करने के लिए सक्षम थे? ? मैं एक ही समस्या में भाग गया .. – lochi

+0

हाय @ लोची, प्रश्न के लिए मेरा अपडेट देखें – 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; 
} 

यह विंडोज और लिनक्स पर काम करता है, लेकिन अन्य ऑपरेटिंग सिस्टम (परीक्षण नहीं)

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); 
    } 

    }