io流的简单应用2

此记事本有打开和保存两个功能。
通过io流中的FileInputStream和JFileChooser等进行操作。
首先在窗口上建立一个JTextArea编辑文件内容。
public class JS extends JFrame {

public static void main(String[] args) {
JS js = new JS();
js.JSUI();
}

public void JSUI() {
this.setTitle("记事本");
this.setSize(400, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JMenuBar jmb = new JMenuBar();
JMenu jm = new JMenu("文件");
jmb.add(jm);

final JMenuItem jmiOpen = new JMenuItem("打开");
jmiOpen.setActionCommand("open");
jm.add(jmiOpen);

final JMenuItem jmiSave = new JMenuItem("保存");
jmiSave.setActionCommand("save");
jm.add(jmiSave);

this.setJMenuBar(jmb);

final JTextArea jta = new JTextArea();
// 添加滚动条
JScrollPane jsp = new JScrollPane(jta);
this.add(jsp);

this.setVisible(true);
}
}
菜单的设置有JMenuBar、JMenu和JMenuItem三个类。
1.JMenuBar是菜单栏的实现,包含JMenu,使用setMenuBar()来设置窗口的菜单栏。
2.JMenu是实现一个包含JMenuItem的弹出框。
3.JMenuItem是菜单中的项的实现。菜单项的本质上是位于列表中的按钮。
添加菜单项的动作监听器。
ActionListener clis = new ActionListener() {
public void actionPerformed(ActionEvent e) {
String str = e.getActionCommand();
if ("open".equals(str)) {
try {
//JFileChooser是一个针对用户主目录的文件选择器。
JFileChooser jfs = new JFileChooser();

//showOpenDialog弹出一个“Open File”文件选择器对话框
int n = jfs.showOpenDialog(null);

if (n == JFileChooser.APPROVE_OPTION) {
//getSelectedFile()返回选中的文件。
//getAbsolutePath()获得文件的绝对路径。
String num = jfs.getSelectedFile().getAbsolutePath();

FileInputStream file = new FileInputStream(num);
BufferedInputStream bf = new BufferedInputStream(file);

int b = bf.available();

byte[] bt = new byte[b];

file.read(bt);

String s = new String(bt);

jta.setText(s);

file.close();

}

} catch (Exception ef) {
ef.printStackTrace();
}
} else if ("save".equals(str)) {

JFileChooser jfc = new JFileChooser();
//设置文件类型框中的选择项。
FileNameExtensionFilter filter = new FileNameExtensionFilter("文本文档", "txt");
FileNameExtensionFilter file = new FileNameExtensionFilter("java文档", "java");

jfc.setFileFilter(filter);
jfc.setFileFilter(file);
//showSaveDialog()弹出一个“Save File”文件选择器对话框。
int num = jfc.showSaveDialog(null);
//APPROVE_OPTION判断当前选择为确认(yes、ok)按钮。0表示确认,1相反。
if(num == JFileChooser.APPROVE_OPTION){

String path = jfc.getSelectedFile().getAbsolutePath();
//getFileFilter()返回当前选择的文件过滤器(即文件类型)。
//getDescription()返回文件描述。
String p = jfc.getFileFilter().getDescription();

if("文本文件".equals(p)&&!path.endsWith(".txt")){
path = path + ".txt";
}

if("java文件".equals(p)&&!path.endsWith(".java")){
path = path + ".java";
}

try {
FileOutputStream fos = new FileOutputStream(path);
BufferedOutputStream bos = new BufferedOutputStream(fos);

String sss = jta.getText();

byte[] b = sss.getBytes();

bos.write(b);
bos.flush();
bos.close();

} catch (Exception el) {
// TODO Auto-generated catch block
el.printStackTrace();
}
}

}
}

};

jmiOpen.addActionListener(clis);
jmiSave.addActionListener(clis);
********************************************************************
int b = bf.available();
byte[] bt = new byte[b];
file.read(bt);
相对于
String str = "";
int t = bf.read();
while(t!=-1)
{
str = str + (String) t;
t = bf.read();
}
没有打开或保存文件大小的限制。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值