java showsavedialog_如何使用JFileChooser 的showSaveDialog()方法--实现保存文件功能?(完整)...

如何使用JFileChooser 的showSaveDialog()方法--实现保存文件功能?

JFileChooser的 showSaveDialog()方法,可以打开一个保存文件的对话框,可具体如何实现-- 保存文件功能呢?

基本思路:打开文件-----获取文件属性[文件路径+文件名]---->使用输入流[InputStream]从磁盘上读取

保存文件----->创建文件属性[文件路径+文件名]---->使用输出流[OutPutStream]写到磁盘上

使用 swing  JFileChooser的 showSaveDialog()方法打开文件对话,来保存的话,必须要注意几点:

1、chooser.getSelectedFile(); 这个函数:若是showOpenDialog()对话框,返回的是对话框选中的文件;

如果对话框类型是showSaveDialog的话,那么这里返回的值是你要保存的文件,这个文件可能存在,可能不存在。如果不存在,返回的是--你在对话框中输入的文件名。

既然知道了文件,如果不存在,就新建一个,然后向文件写入数据,就可以实现保存了。另外JFileChooser不会自动帮你读数据并存进去,这些都要自已用代码实现。

2、实现功能完整如下:

其中的open和save是两个JButton,分别实现按钮的功能----打开和保存文件,具体实现代码如下[以匿名类方式注册监听事件]

//....实现--“文件打开”....."文件保存".功能....................................................................

open.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

fileChooser.showOpenDialog(MyMenuEditor.this);           //JFileChooser  fileChooser

BufferedReader br =null;

contentArea.setText("");       //contentArea是一个编辑文本区JTextArea

try {

br = new BufferedReader(new InputStreamReader(new FileInputStream(fileChooser.getSelectedFile())));

while(true){

String content = br.readLine();//每次读取一行字符串

if(content==null)  break;

contentArea.append(content);

contentArea.append("\n");//换行

}

} catch (FileNotFoundException e1) {

JOptionPane.showMessageDialog(MyMenuEditor.this, "文件Not Found-打开失败");

} catch (IOException e1) {

JOptionPane.showMessageDialog(MyMenuEditor.this, "文件读取异常");

}finally{

try {

if(br!=null) br.close();

} catch (IOException e1) {

}

}

}

});

save.addActionListener(new ActionListener() {

BufferedWriter bw = null;

@Override

public void actionPerformed(ActionEvent e) {

int select = fileChooser.showSaveDialog(MyMenuEditor.this);

//                fileChooser.setSelectedFile(new File("新建.txt"));

File file = null;

String fileName = null;

if(select==JFileChooser.APPROVE_OPTION){

file =fileChooser.getSelectedFile();   //如果这里并没有选取中任何的文件,下面的fileChooser.getName(file)将会返回手输入的文件名

}

fileName = fileChooser.getName(file);

if(fileName==null|| fileName.trim().length()==0){

JOptionPane.showMessageDialog(MyMenuEditor.this, "文件名为空!");

}

if(file.isFile()){

fileName = file.getName();

}

//否则是个文件夹

file = fileChooser.getCurrentDirectory();//获得当前目录

String path = file.getPath()+java.io.File.separator+fileName;

file =new File(path);

if(file.exists()) {  //若选择已有文件----询问是否要覆盖

int i = JOptionPane.showConfirmDialog(MyMenuEditor.this, "该文件已经存在,确定要覆盖吗?");

if(i == JOptionPane.YES_OPTION)   ;

else   return ;

}

try {

bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));

bw.write(contentArea.getText());

bw.flush();

} catch (FileNotFoundException e1) {

JOptionPane.showMessageDialog(MyMenuEditor.this, "文件保存出错"+e1.getMessage());

} catch (IOException e1) {

e1.printStackTrace();

}finally{

try {

if(bw!=null) bw.close();

} catch (IOException e1) {

}

}

}

});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值