rf.seek(i*4);
System.out.println(rf.readInt()); }
rf.close(); } }
程序分析:
本程序打开一个随机文件c.txt,向里面连续写入从0到9十个整数,然后将指针移到第五个,将5改为0,然后输出。
图9-7 随机文件的读写
从结果可看出5被改写为0。
移动指针时注意,一个整型数占4个字节,所以用rf.seek(5*4)。
9.5 案例-设计一个小型文本文件编辑器
设计一个图形界面的小型文本编辑器,可以打开一个文本文件,并且进行编辑,修改,保存。进入这个小文本编辑器之前先输入密码,如果密码输入正确进入编辑器,输入错误,系统给出提示。 1.登录界面
登录界面如图9-8所示。
图9-8 登录界面
代码如下:Login.java import java.io.*;
import javax.swing.*;
import java.awt.event.*;
public class Login extends JFrame implements ActionListener{ JPasswordField jpf=new JPasswordField(10); public Login(){
JPanel jp=new JPanel();
jp.add(new JLabel(\请输入密码:\ jp.add(jpf);
JButton jbtn=new JButton(\确定\ jbtn.addActionListener(this); jp.add(jbtn);
this.add(jp);
this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setSize(300,100); this.setLocation(200,200); this.setVisible(true); }
public void actionPerformed(ActionEvent ae){ try{
char fin[]=new char[256]; File f=new File(\
FileReader fr=new FileReader(f); fr.read(fin);
String pwd=new String(fin); fr.close();
pwd=pwd.trim();
String jt=new String(jpf.getPassword()); jt=jt.trim();
if(pwd.equals(jt)){ this.dispose(); new Edit(); } else{
JOptionPane.showMessageDialog(null, \密码错误,JOptionPane.ERROR_MESSAGE); } }
catch(Exception e){
System.out.println(\文件读取错误\ } }
请重输!\\提示\
public static void main(String args[]){ new Login(); } }
说明:
(1)Login类继承JFrame类,在构造方法中设计界面。
(2)密码保存在pwd.txt文件中,为了保密起见,采用JPasswordField组件输入密码。 (3)采用trim()方法是为了去空格,因为字符转换为字符串类型时可能会有空格,当用户通过文本框输入内容时也可能会输入空格。
2.编辑界面
如图9-9所示。
图9-9 编辑界面
代码如下:Edit.java import javax.swing.*; import java.awt.event.*; import java.io.*;
public class Edit extends JFrame implements ActionListener{ JTextArea jta=new JTextArea(10,40); JTextField jt_file=new JTextField(20); JTextField jt_txt=new JTextField(20);
JButton jbtn_add=new JButton(\添加\ JButton jbtn_save=new JButton(\保存\ JButton jbtn_open=new JButton(\打开\
public Edit(){
jbtn_add.addActionListener(this); jbtn_save.addActionListener(this); jbtn_open.addActionListener(this);
JPanel jp=new JPanel();
jp.add(new JLabel(\请输入文件名:\ jp.add(jt_file); jp.add(jbtn_open); jp.add(jta);
jp.add(new JLabel(\请输入内容:\ jp.add(jt_txt); jp.add(jbtn_add); jp.add(jbtn_save);
this.setSize(500,320); this.setLocation(200,200);
this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.add(jp);
this.setVisible(true); }
public void actionPerformed(ActionEvent e){ String sf;
if(e.getSource()==jbtn_add){ //“添加”按钮代码 String s1=jta.getText(); if(!s1.equals(\ jta.append(\ }
jta.append(jt_txt.getText()); }
if(e.getSource()==jbtn_save){ //“保存”按钮代码 sf=(jt_file.getText()).trim(); if(sf.equals(\
showMsg(\请输入文件名!\ } else{ try{
File f=new File(sf);
FileWriter fw=new FileWriter(f); fw.write(jta.getText()); fw.close();
showMsg(\保存完毕!\
相关推荐: