📄 database.java
字号:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.xml.parsers.*;
import java.io.*;
import org.xml.sax.*;
import org.w3c.dom.*;
import org.apache.crimson.tree.XmlDocument;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.swing.tree.*;
import javax.swing.tree.DefaultMutableTreeNode;
public class database extends Frame implements ActionListener
{
TextArea Check;
//Createtable createtable;
TextField Edit;
Button done,undo;
public String databasename=null;
public Document document=null;
public Element root;
public DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
public DocumentBuilder db;
int mode=-1;
database(TextArea t) //主类的构造函数,完成构件的初始化,和图形界面的安排工作
{
setTitle("database name");
setLocation(200,200);
setSize(200,140);
Edit=new TextField();
Edit.setBounds(36,50,130,30);
add(Edit);
done=new Button("是");
done.setBounds(36,80,60,30);
done.addActionListener(this);
add(done);
undo=new Button("否");
undo.setBounds(106,80,60,30);
undo.addActionListener(this);
add(undo);
Check=t;
setLayout(null);
//setVisible(true);
}
public void setmode(int mode)
{
this.mode=mode;
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==done)
{
if(mode==0)
{
databasename=Edit.getText().trim();
setVisible(false);
try
{
dbf.setIgnoringComments(true);
dbf.setIgnoringElementContentWhitespace(true);
db=dbf.newDocumentBuilder();
document=db.newDocument();
root=(Element) document.createElement("tablelist"); //建立根元素
document.appendChild(root);
writeXMLFile(databasename);
}catch(Exception ee){System.out.println(ee);}
}
if(mode==1)
{
databasename=Edit.getText().trim();
setVisible(false);
try
{
db=dbf.newDocumentBuilder();
readXMLFile(databasename);
}catch(Exception ee){System.out.println(ee);}
if(document==null)
{
Check.append("*************************************\n");
Check.append("文件没有加载成功\n");
}
else
{
Check.append("*************************************\n");
Check.append("文件加载成功\n");
}
}
}
if(e.getSource()==undo) //文件的读按钮
{
setVisible(false);
}
}
public void readXMLFile(String inFile) throws Exception
{
try
{
document=db.parse(inFile);
Show sh=new Show();
sh.show(document.getDocumentElement());
} catch (DOMException dom) {} catch (IOException ioe) {}
}
public void writeXMLFile(String outFile) throws Exception
{
//为解析XML作准备,创建DocumentBuilderFactory实例,指定DocumentBuilder
//把XML文档输出到指定的文件
/*FileOutputStream outStream = new FileOutputStream(outFile);
OutputStreamWriter outWriter = new OutputStreamWriter(outStream);
((XmlDocument) document).write(outWriter,"GB2312");
outWriter.close();
outStream.close(); */
TransformerFactory tf;
Transformer transformer;
DOMSource source;
PrintWriter pw;
StreamResult result;
try{
tf=TransformerFactory.newInstance();
transformer=tf.newTransformer();
source=new DOMSource(document);
transformer.setOutputProperty(OutputKeys.ENCODING,"GB2312");
transformer.setOutputProperty(OutputKeys.INDENT,"yes");
pw=new PrintWriter(new FileOutputStream(outFile));
result=new StreamResult(pw);
transformer.transform(source,result);
/*********************************************************************/
/*文件处理关键代码*/
FileInputStream fIn=new FileInputStream(outFile);
BufferedInputStream bIn=new BufferedInputStream(fIn);
int size=bIn.available();
byte[] b=new byte[size];
bIn.read(b,0,size);
String str=new String(b);
char[] c=new char[size];
str.getChars(0,size,c,0);
for(int i=0;i<size;i++)
{
if(c[i]==10 || c[i]==13)
{
//System.out.println(i);
int j=i;
for(;j<size-1;j++)
{
c[j]=c[j+1];
}
i--;
size--;
}
}
str=new String(c,0,size);
FileOutputStream wf=new FileOutputStream(outFile);
wf.write(str.getBytes());
/***************************************************/
}
catch(TransformerException mye){
mye.printStackTrace();
}
catch(IOException exp){
exp.printStackTrace();
}
}
public static void main(String args[])
{
//new database();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -