2011-04-19 21 views
14

I (commons-io kullanarak) böyle bir şey aracılığıyla JFilechooser içinde dizin yolunu ayarlamak çalışıyorum: Ben getCanonicalPath kullanıyorumjfilechooser - bir dosyada bir yola dizini set

String fileContents = IOUtils.toString(new FileInputStream("path.txt")); 
File theDirectory = new File(fileContents); 

filechooser = new JFileChooser(); 
fileChooser.setCurrentDirectory(theDirectory); 
filechooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 

() almak için yolu ve burada tüm kodumu koymak niyetinde değilim

path = file.getCanonicalPath(); 

path.txt dosyada yazma, ama programı yazıyor ve path.txt yolu okur eminim. Herhangi bir hata alamıyorum, ancak her zaman programı çalıştırdığım zaman JFilechooser'ı belgelerimdeki klasörde açıyorum. Ne yapıyorum?

+0

"Dizini" yazdırmayı ve var olup olmadığını sordunuz mu? System.out.println (theDirectory.getCanonicalPath() + "var:" + theDirectory.exists()); 'Dosya artık mevcut değilse, dosya seçici varsayılan olarak Belgelerim klasörüne gider. – wolfcastle

cevap

20

deneyin yapıcı doğrudan geçerli dizin geçmek:

filechooser = new JFileChooser(theDirectory); 
5

Eğer API danışmak, varsayılan kurucuyu kullanarak (yani new JFileChooser()): işaret

Yapıtlarının bir JFileChooser Kullanıcının varsayılan dizini. Bu varsayılanı, işletim sistemine bağlıdır. Genellikle, Windows'ta "My Belgeler" klasörü ve Unix'teki kullanıcının ana dizini.

Bu hep Belgelerim açılan hesaba görünüyor, ancak bu değil senin sorunun.

geçerli dizin ayarlar: Aslında, senin sorunun geçerli dizin (yani setCurrentDirectory(theDirectory)) ayarını aittir. uygulamasında null değeri, dosya seçiciyi kullanıcının varsayılan dizini olan işaret edecek şekilde ayarlar. Bu varsayılanı, işletim sistemine bağlıdır. Genellikle, Windows'ta "My Belgeler" klasörü ve Unix'teki kullanıcının ana dizini. dosyası currentDirectory olarak iletildiyse, bir dizin değil, dosyasının üst öğesi currentDirectory olarak kullanılacaktır. Üst öğe, arası geçişli değilse, geçiş yapılabilir bir dizin bulana kadar ana ağacından yukarı doğru ilerler veya dosya sisteminin köprüsüne ulaşır. Eğer bir dizini geçerli dizinde olarak dosyayı ayarlama ve değiliz gibi göründüğünden

söyleniyor, ben vurgulanan metnin dikkat ediyorum.ana sınıfta

+0

Geçerli dizin olarak bir dosya ayarlamıyorum. Geçerli dizini seçili son dizine ayarlamaya çalışıyorum Dosya = fileChooser.getSelectedFile(); Programlamayı kapatıp tekrar – fermk090

+1

@ fermk090 çalıştırırsam bile her zaman seçili olan son dizin ile filechooser'ı açın: o zaman “seçilen son dizini” sürdürmek zorunda kalacaksınız. Program tekrar, kalıcı dizini yükleyin. – mre

+0

Sanırım onun yaptığı bu. Konumu 'path.txt' ile ısrar ediyor ve kurtarıyor. – wolfcastle

0

public static String dirpath="."; 

private void btnBrowseActionPerformed(java.awt.event.ActionEvent evt) {  
JFileChooser jfc = new JFileChooser(dirpath); 
dirpath =jfc.getSelectedFile().getAbsolutePath().toString(); 
} 
1

beyan için açtığınız son dizin seçin:

chooser.setCurrentDirectory(lastDirectory); 

int r = chooser.showOpenDialog(new JPanel()); 

if (r == JFileChooser.APPROVE_OPTION) { 
    fileName = chooser.getSelectedFile().getPath(); 
    lastDirectory = chooser.getSelectedFile(); 
} 
1

JFileChooser Seçici = new JFileChooser ("F:");