//有时候打开文本文件 并没有覆盖 而是续写了 这是为什么呢? 就是打开新的文本 旧的文本还在
package iofile;
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringWriter;
//菜单
public class MenuDemo {
public static void main(String args[])
{
new MenuTest();
}
}
class MenuTest
{
private Frame f;//窗体
private MenuBar bar;//菜单栏
private Menu filemenu;//文件菜单
private TextArea ta;//文本区
private MenuItem closeitem,savefile,openFile;//菜单条目
private File file;//封装文件目录
MenuTest()
{
init();
}
public void init()
{
f=new Frame("简单记事本");
f.setBounds(300,100,500,450);//位置大小
// f.setLayout(new FlowLayout()); 默认为边界布局
ta=new TextArea();
f.add(ta);
bar=new MenuBar();
filemenu=new Menu("文件");
openFile=new MenuItem("打开");
savefile=new MenuItem("保存");
closeitem=new MenuItem("退出");
filemenu.add(openFile);//添加 打开条目
filemenu.add(savefile);//添加 存储条目
filemenu.add(closeitem);//添加 退出条目
bar.add(filemenu);//文件菜单
f.setMenuBar(bar);//添加菜单栏
myEvent();//事件监听器
f.setVisible(true);//显示窗体
}
public void myEvent()//事件监听器
{
f.addWindowListener(new WindowAdapter()//窗体事件监听器
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
closeitem.addActionListener( new ActionListener() //退出事件
{
@Override
public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
System.exit(0);
}
});
openFile.addActionListener(new ActionListener()//打开文件事件
{
public void actionPerformed(ActionEvent e)
{
FileDialog open=new FileDialog(f,"打开",FileDialog.LOAD);//建立 初始化对话框
open.setVisible(true);//显示对话框
String dir=open.getDirectory();
String files=open.getFile();
if(dir==null||files==null)//若没有选取 则返回
return;
ta.setText("");//选取文件后 清空文本区
file=new File(dir,files);
BufferedReader br = null;//字符读取流
try
{
br=new BufferedReader(new FileReader(file));
String len=null;
while((len=br.readLine())!=null)
{
ta.append(len+"\r\n");
}
}
catch(IOException ioe)
{
throw new RuntimeException("文件读取失败");
}
finally
{
if(br!=null)
try{br.close();}
catch(IOException ie)
{throw new RuntimeException("文本读取失败");}
}
}
});
savefile.addActionListener(new ActionListener()//保存文件事件
{
public void actionPerformed(ActionEvent e)
{
FileDialog save=new FileDialog(f,"保存",FileDialog.SAVE);//创建始化对话框
if(file==null)//若目录为不存在 则创建目录
{
save.setVisible(true);//显示对话框
String dir=save.getDirectory();
String files=save.getFile();
if(dir==null||files==null)//若没有选取 则返回
return;
file=new File(dir,files);
}
BufferedWriter bw = null;//字符输出流
try
{
bw=new BufferedWriter(new FileWriter(file));
bw.write(ta.getText());
bw.flush();
}
catch(IOException ioe)
{
throw new RuntimeException("文件读取失败");
}
finally//关闭资源
{
if(bw!=null)
try{bw.close();}
catch(IOException ie)
{throw new RuntimeException("文本读取失败");}
}
}
});
}
}
|
|