java在编写一些图形化的小程序时,有时也要去存储少量的数据,如果用jdbc来连接数据库,就会使程序速度减慢,而且及不方面,我们可以用java中的文件来代替数据库保存数据,这样不但可以实现存储的功能,而且不用考虑数据频繁的存取,可以把文件定义成为html文件,并将存储的数据以表格的方式显示,这样就可以直接在网页中看到数据,下面是我写的一个小的文件存储数据的实例:
import java.awt.event.actionevent;import java.awt.event.actionlistener;import java.sql.*;import java.io.*;import javax.swing.*;public class filework extends jframe implements actionlistener { jpanel p; jbutton b0,b1,b2; jtable tab; object my[][] = new object[50][3]; int a[]=new int[50]; int b[]=new int[50]; int j=0,rows=0; int k=0,shu=0; string name,age; string title[] = {"姓名", "年龄", "身高"}; bufferedreader in; int i = 0; public filework() { super("数据轮回"); this.setsize(300, 300); this.setdefaultcloseoperation(jframe.exit_on_close); p = new jpanel(); tab = new jtable(my, title); b0 = new jbutton("添加"); b1 = new jbutton("打开"); b2 = new jbutton("保存"); b1.addactionlistener(this); b2.addactionlistener(this); b0.addactionlistener(this); p.add(b0); p.add(b1); p.add(b2); this.getcontentpane().add(new jscrollpane(tab), "center"); this.getcontentpane().add(p, "south"); this.setvisible(true); } public void fileopen() { try{ jfilechooser choose=new jfilechooser("."); int sis=choose.showopendialog(this); string name=choose.getselectedfile()+""; if(sis==jfilechooser.approve_option){ in=new bufferedreader(new filereader(name)); string over=null; string line; while((line=in.readline())!=null){ over=over+line; } for(int i=0;i<a.length;i++){ a[i]=over.indexof("<td>")+4; b[i]=over.indexof("</td>"); my[rows][k]=over.substring(a[i],b[i]); over=over.substring(b[i]+4,over.length()); k=k+1; if(k==3){k=0;rows=rows+1;} } } }catch(exception ie){} } public static void main(string[] args) { filework filework = new filework(); } public void actionperformed(actionevent e) { if (e.getsource() == b1) { fileopen(); } if (e.getsource() == b2) { jfilechooser save=new jfilechooser("."); int result=save.showsavedialog(null); string s1=save.getselectedfile()+""; if(result==jfilechooser.approve_option){ try { outputstreamwriter out = new outputstreamwriter(new fileoutputstream(s1)); string s2="<html><head></head><body>";s2=s2+"<table border=/"1/" width=/"50%/" bordercolor=/"green/" align=/"center/">"; s2=s2+"<tr>"; s2=s2+"<th>"+"姓名"+"</th>"; s2=s2+"<th>"+"年龄"+"</th>"; s2=s2+"<th>"+"身高"+"</th>"; s2=s2+"</tr>"; for(int shu=0;shu<rows;shu++) { s2=s2+"<tr align=/"center/">"; s2=s2+"<td>"+my[shu][0].tostring().trim()+"</td>"; s2=s2+"<td>"+my[shu][1].tostring().trim()+"</td>"; s2=s2+"<td>"+my[shu][2].tostring().trim()+"</td>"; s2=s2+"</tr>"; } s2=s2+"</table></body></html>"; out.write(s2); out.close(); for(int i1=0;i1<50;i1++){ my[i1][0]=""; my[i1][1]=""; my[i1][2]=""; } rows=0; this.repaint(); joptionpane.showmessagedialog(null,"保存数据成功!","information",joptionpane.question_message); } catch (exception ex1) { } } } if(e.getsource()==b0){ jtextfield message[]=new jtextfield[6]; message[0]=new jtextfield("请输入姓名:"); message[0].seteditable(false); message[1]=new jtextfield(); message[2]=new jtextfield("请输入年龄:"); message[2].seteditable(false); message[3]=new jtextfield(); message[4]=new jtextfield("请输入身高:"); message[4].seteditable(false); message[5]=new jtextfield(); string str[]={"确认","取消"}; int go=joptionpane.showoptiondialog(null, message, "添加用户",joptionpane.yes_option, joptionpane.information_message, null, str, str[0]); if(go==0){ if(message[1].gettext().equals("")&& message[3].gettext().equals("")&& message[5].gettext().equals("")){joptionpane.showmessagedialog(null,"数据不能为空","error",joptionpane.error_message);} else{ my[rows][0]=message[1].gettext(); my[rows][1]=message[3].gettext(); my[rows][2]=message[5].gettext(); this.repaint();rows=rows+1;} } } }}
新闻热点
疑难解答
图片精选