黑马程序员技术交流社区
标题:
关于第22天迷你记事本的保存功能
[打印本页]
作者:
李铁
时间:
2012-10-5 22:50
标题:
关于第22天迷你记事本的保存功能
本帖最后由 李铁 于 2012-10-20 23:07 编辑
sitem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//
这里只是对空白的目录,但是如果我要判断当前目录是不是已经打开的文件目录,也就是说实现打开已有文件修改然后保存的时候不再提示“保存”对话框;该怎么做呢?
if (file == null) {
sf.setVisible(true);
// 因为要写到文件中,所以从对话框中获取文件
String path = sf.getDirectory();
String filename = sf.getFile();
if (path == null || filename == null)
return;
file = new File(path, filename);
// 将文本框的字符写入文件
try {
// 创建字符输入流
BufferedWriter bw = new BufferedWriter(new FileWriter(
file));
// 获取文本框中的字符
String str = ta.getText();
// 写入
bw.write(str);
// bw.flush();
// 关闭流
bw.close();
} catch (Exception e2) {
new RuntimeException("写入失败");
}
}
}
});
大家帮帮忙,谢谢了!
作者:
李铁
时间:
2012-10-20 10:05
把“保存”功能的file局部变量也放到类变量中,就行了!如下:
oitem.addActionListener(new ActionListener() {
/*
* 读取文件内容显示到文本域中 思路: 1
* 通过getDirectory(),getFile方法获取文件的路径,判断是否为空(因为用户有时点取消);如果为空则不做任何动作。
* 2 创建字符输入流与文件相关联 3决断是否读到行未尾,如果读到行未尾,将该字符串添加到文域中 4关闭流
*/
@Override
public void actionPerformed(ActionEvent e) {
of.setVisible(true);
String path = of.getDirectory();
String fileName = of.getFile();
// System.out.println(path+"....."+fileName);
// 当用户点取消就会报空指针异常,所以要判断
if (path == null || fileName == null)
// 如果为空不做任何动作
return;
// 文域设置为空
ta.setText("");
// 封装成文件
//File file = new File(path, fileName);//这样做当执行完后,就不能保存“打开”事件所对应的文件的目录,需要把它定义给类变量
//在类中定义类变量
File file ;
//再把上面的修改成
file = new File(path, fileName);
// 创建输入流
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(file));
String line = null;
while ((line = br.readLine()) != null)
ta.append(line + "\r\n");
} catch (Exception e1) {
new RuntimeException("读取失败");
}
}
});
版主给我加技术分呀,谢谢!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2