Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ifrit's Flames

Criando janela file finder

Recommended Posts

Ola pessoal,Gostaria de saber como posso criar aquela janela tipo windows de procurar arquivo que abre quando a gente vai abrir ou salvar alguma coisa. Preciso que esta janela apenas me retorne o path do arquivo selecionado e se possivel, limitar o tipo de arquivo a ser buscado, tipo txt.Desde ja agradeço,Abraços a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ae, da uma pesquisa sobre JFileChooser (javax.swing.JFileChooser) que você vai conseguir isso tudo ai. Eu não lembro exatamente como que limita o tipo de arquivo, mas setando as propriedades dele você consegue isso também.flws

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vlw, consegui fazer a janela e pegar o caminho, mas ainda estou com outro probleminhaSegue abaixo: \+----------------/|import javax.swing.*;|import java.awt.*;|import java.awt.event.*;|import java.io.*;||public class testes extends JFrame{| | public static void main(String[] args) {| | try{| File arquivo = new File("X:\\publictes\\Fabio\\Facul\\Java\\RCMaster\\DiretorioPadrao.txt");| File dir_padrao = new File("");| JFileChooser fc = new JFileChooser();| fc.setFileFilter(new javax.swing.filechooser.FileFilter(){| public boolean accept(File f){| return f.getName().toLowerCase().endsWith(".txt") || f.isDirectory();| }|| public String getDescription() {| return "Arquivos Texto (.txt)";| }| });| if (arquivo.exists()){| BufferedReader in = new BufferedReader(new FileReader(arquivo));| dir_padrao = new File(in.readLine());| fc.setCurrentDirectory(dir_padrao);| }| fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);| int res = fc.showOpenDialog(null);| if(res == JFileChooser.APPROVE_OPTION){| dir_padrao = fc.getSelectedFile();+-->//Aqui eu estou tentando gravar o caminho em um txt que vai memorizar o ultimo diretório acessado, mas ele grava em branco. Como eu posso estar fazendo isso? FileWriter fw = new FileWriter(arquivo); fw.write(dir_padrao.getPath()); System.out.print(dir_padrao.getAbsolutePath()); } }catch (Exception e){ System.out.print(e); } }}Novamente obrigado,Abraços,Fabio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, o nosso forum tem um recurso muito legal chamado codebox. do jeito q você postou o código ficou uma zona.

se quiser indicar onde está o erro, por favor, use comentários da linguagem que você tá postando.

 

import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.*;public class Test extends JFrame {	public static void main(String[] args) {		try {			File arquivo = new File("DiretorioPadrao.txt");			File dir_padrao = new File("");			JFileChooser fc = new JFileChooser();			if (arquivo.exists()) {				BufferedReader in = new BufferedReader(new FileReader(arquivo));				dir_padrao = new File(in.readLine());				fc.setCurrentDirectory(dir_padrao);			}			fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);			int res = fc.showOpenDialog(null);			if (res == JFileChooser.APPROVE_OPTION) {				dir_padrao = fc.getSelectedFile();				// Aqui eu estou tentando gravar o caminho em um txt que vai				// memorizar o ultimo diretório acessado, mas ele grava em				// branco. Como eu posso estar fazendo isso?				FileWriter fw = new FileWriter(arquivo);				fw.write(dir_padrao.getPath());				System.out.print(dir_padrao.getAbsolutePath());				fw.close();			}		} catch (Exception e) {			System.out.print(e);		}	}}

mas no seu caso só faltou uma coisinha simples....

O FileWriter não vai escrever no arquivo exatamente no momento q você chama a função. Ele pode escrever naquele momento mas tb pode não escrever. Ele vai esperar um momento q o sistema esteja mais livre pra fazer isso. Daí para garantir que todas as chamadas sejam terminadas você precisa chamar um fw.close(); para fechar o seu stream de escrita no arquivo.

 

caso você precise que o stream escreva tudo, mas sem fechá-lo. use fw.flush() Mas como no seu caso o programa terminou mesmo, use o close()

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.