Olá! Alguém sabe se existe uma maneira de quando o usuario escolher a opção para abrir um diretorio pelo JFileChooser, a opção do diretorio ficar de alguma maneira guardada para q quando ele fosse abrir novamente o diretorio, o FileChooser jah abrisse naquele caminho que foi anteriormente acessado?
Uma vez eu fiz algo assim:
public static void main(String[] args) {
Properties prop = new Properties();
//diretório onde lê o arquivo de propriedade
String path = "C:\\file.properties";
String caminho = "";
try {
//indica o arquivo
prop.load(new FileReader(path));
//indica a propriedade a ser lida
caminho = prop.getProperty("file.chooser");
} catch (IOException e) {
e.printStackTrace();
}
//abre o file chooser passando o caminho indicado no arquivo
JFileChooser jfc = new JFileChooser(caminho);
jfc.showOpenDialog(null);
//pega o diretorio do qual foi aberto o arquivo
caminho = jfc.getSelectedFile().getParent();
System.out.printf("path: " + caminho);
//seta o novo diretorio na propriedade do arquivo
prop.setProperty("file.chooser", caminho);
try {
//salva o arquivo com o novo caminho a ser aberto na próxima visualização do filechooser
FileOutputStream fos = new FileOutputStream(path);
prop.store(fos, "");
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
arquivo file.properties:
file.chooser=C\\:
No caso, criei um arquivo de propriedades e nele criei uma propriedade para salvar o ultimo diretório que se teve um arquivo aberto.
Eu tô fazendo assim, mas não tah funcionando.
Parece que ele não grava o caminho da ultima pasta acessada
public class Janela extends JFrame {
private JFileChooser fc;
private File file = new File("conf.properties");
private Properties props = new Properties();
private String caminho;
public Janela(File f) throws FileNotFoundException, IOException {
try {
props.load(new FileInputStream(file));
caminho = props.getProperty("lastDir");
}
catch (IOException ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
}
}
public void insertFeatures(){
arquivo.add(abrir); // onde arquivo é um JMenuItem
abrir.addActionListener(new ActionListener() {
//metodo que abre uma nova janela
public void actionPerformed(ActionEvent e) {
fc = new JFileChooser(caminho);
int result = fc.showOpenDialog(null);
caminho = fc.getSelectedFile().getParent();
props.setProperty("lastDir",caminho);
switch (result){
case JFileChooser.APPROVE_OPTION:
File f = (fc.getSelectedFile());
System.out.println(f);
if (f.toString().toLowerCase().endsWith(".map")){
try {
Janela outra = new Janela(f);
} catch (FileNotFoundException ex) {
Logger.getLogger(Janela.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Janela.class.getName()).log(Level.SEVERE, null, ex);
}
}//end if
Se eu mando printar o caminho:
ry {
props.load(new FileInputStream(file));
caminho = props.getProperty("lastDir");
System.out.println(caminho); /// Nesse print aparece null
}
catch (IOException ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
}
o meu props tah assim:
lastdir= C\\:
não deveria estar printando C\:
E vc está usando essa parte para salvar o arquivo?
FileOutputStream fos = new FileOutputStream(path);
prop.store(fos, "");
fos.close();
Pq é a opção props.store(fos, “”), que irá executar a alteração feita no props.setProperty(“lastDir”,caminho);
[quote=oitathi]Se eu mando printar o caminho:
ry {
props.load(new FileInputStream(file));
caminho = props.getProperty("lastDir");
System.out.println(caminho); /// Nesse print aparece null
}
catch (IOException ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
}
o meu props tah assim:
lastdir= C\\:
não deveria estar printando C\:[/quote]
Deveria, ele está encontrando o arquivo? Não está gerando nenhuma exceção de FilenotFound?
Da uma conferida nessa linha fc = new JFileChooser(caminho);
e ve se a variavel caminho está com a url ou está null ou vazia.