日期:2014-05-20  浏览次数:20976 次

java中如何查询,修改,删除文件指定中的数据啊??不用数据库!!
我要弄一个小型的学生管理系统,其中包括学生的姓名和学号信息!不连接数据库怎样可以实现查询,修改,删除文件中的姓名和学号,主要是删除文件要怎么弄。急求!!!!!!!!

------解决方案--------------------
不连接数据库怎么查找?当然,你用hibernate的话,到可以, 让它自动创建表就好了。其他的不知道了,我还是个新手。
------解决方案--------------------
既然不用数据库,那么数据可以全部读到内存中,遇到增,删,改先更新内存中的数据,然后全部重写到文件中,当然这个需要线程同步的
------解决方案--------------------
可以用xml存取数据

------解决方案--------------------
这样可以不,系统开启,把数据读入到内存,改变内存的值,然后保存到文本里面。
------解决方案--------------------
数据肯定是要保存起来到一个地方的
不用数据库,就用txt或者xml之类的
反正肯定要保存的
txt要按一定的格式保存就可以了
其实都没有数据库来的简单
------解决方案--------------------
用xml文件或者txt等文件存储信息,既然是小型系统就一次把所有数据都缓存到内存里面,隔一段时间进行一次同步,但是要注意程序关闭或者突然挂了数据可能没有写入到文件中的问题。
------解决方案--------------------
用xml保存数据的代码,增删改查都有,随便看看吧.没做优化,没做条件判断.如果需要,自己改改吧
用了jdom.jar包

Java code

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;

/**
 * 查询,修改,删除文件指定中的数据,不用数据库 用xml做数据库
 */
public class Student {
         /**
     * 启动
     */
    public static void main(String args[]) {
        Student st = new Student();
        // 查询
        st.search("00002");
        
        // 修改
        st.modify("00003","转学了");
        
        // 删除
        st.delete("00004");
        
        // 追加
        st.add("00005" ,"高七","1","2010/05/06","xxxx","1","备注xxxx");
    }

    /**
     * 查询
     * @param studentId 学生Id(唯一)
     */
    public void search(String studentId) {
        try {
            SAXBuilder sb = new SAXBuilder();// 建立构造器
            Document doc = sb.build(new FileInputStream("a.xml"));// 读入指定文件
            Element root = doc.getRootElement();// 获得根节点
            List list = root.getChildren();// 将根节点下的所有子节点放入List中
            
            // 循环根节点下的各子节点
            for (int i = 0; i < list.size(); i++) {
                Element item = (Element) list.get(i);// 取得节点实例
                String id = item.getAttribute("ID").getValue();// 取得属性值
                // 节点学生ID=待查找的Id
                if (studentId.equals(id)) {
                    System.out.println("id-->" + id);
                    // 取得姓名节点值
                    String name = item.getChild("name").getText();
                    System.out.println("姓名-->" + name);
                    // 取得性别节点值
                    String sex = item.getChild("sex").getText();
                    System.out.println("性别-->" + sex);
                    // 取得出生年月节点值
                    String birthday = item.getChild("birthday").getText();
                    System.out.println("出生年月-->" + birthday);
                    // 找到后退出循环
                    return;
                }
            }
            System.out.println("没有找到该学生.");
        } catch (Exception e) {
            System.out.println(e);
        }
    }

    /**
     * 修改
     * @param studentId 学生Id(唯一)
     * @param note 备注
     */
    public void modify(String studentId, String note) {
        try {
            SAXBuilder sb = new SAXBuilder();// 建立构造器
            Document doc = sb.build(new FileInputStream("a.xml"));// 读入指定文件
            Element root = doc.getRootElement();// 获得根节点
            List list = root.getChildren();// 将根节点下的所有子节点放入List中
            // 循环根节点下的各子节点
            for (int i = 0; i < list.size(); i++) {
                Element item = (Element) list.get(i);// 取得节点实例
                String id = item.getAttribute("ID").getValue();// 取得属性值
                // 节点学生ID=待查找的Id
                if (studentId.equals(id)) {
                    // 修改备注
                    item.getChild("note").setText(note);
                    // 找到后退出循环
                    break;
                }
            }
            
            XMLOutputter XMLOut = new XMLOutputter();
            // 输出a.xml文件;
            XMLOut.output(doc, new FileOutputStream("a.xml"));
        } catch (Exception e) {
            System.out.println(e);
        }
    }
    
    /**
     * 删除
     * @param studentId 学生Id(唯一)
     */
    public void delete(String studentId) {
        try {
            SAXBuilder sb = new SAXBuilder();// 建立构造器
            Document doc = sb.build(new FileInputStream("a.xml"));// 读入指定文件
            Element root = doc.getRootElement();// 获得根节点
            List list = root.getChildren();// 将根节点下的所有子节点放入List中            
            // 循环根节点下的各子节点
            for (int i = 0; i < list.size(); i++) {
                Element item = (Element) list.get(i);// 取得节点实例                
                String id = item.getAttribute("ID").getValue();// 取得属性值
                // 节点学生ID=待查找的Id
                if (studentId.equals(id)) {
                    item.detach();
                    // 找到后退出循环
                    break;
                }
            }
            
            XMLOutputter XMLOut = new XMLOutputter();
            // 输出a.xml文件;
            XMLOut.output(doc, new FileOutputStream("a.xml"));
        } catch (Exception e) {
            System.out.println(e);
        }
    }
    
    /**
     * 追加
     * @param ID 学生Id(唯一)
     * @param name 姓名
     * @param sex 性别
     * @param birthday 生日
     * @param address 住址
     * @param delFlg 删除区分
     * @param note 备注
     * 
     */    
    public void add(String ID,String name,String sex,String birthday,String address,String delFlg,String note) {
        try {
            SAXBuilder sb = new SAXBuilder();// 建立构造器
            Document doc = sb.build(new FileInputStream("a.xml"));// 读入指定文件
            Element root = doc.getRootElement();// 获得根节点
            
             // 创建学生节点 student;
            Element elements = new Element("student");
            // 给学生节点添加属性 ID;
            elements.setAttribute("ID", ID);
            // 给 学生 节点添加子节点并赋值
            elements.addContent(new Element("name").setText(name));//姓名
            elements.addContent(new Element("sex").setText(sex));//性别
            elements.addContent(new Element("birthday").setText(birthday));//出生日
            elements.addContent(new Element("address").setText(address));//住址
            elements.addContent(new Element("delFlg").setText(delFlg));//删除区分
            elements.addContent(new Element("note").setText(note));//备注
            // 给父节点添加学生子节点;   
            root.addContent(elements);            
            
            XMLOutputter XMLOut = new XMLOutputter();
            // 输出a.xml文件;
            XMLOut.output(doc, new FileOutputStream("a.xml"));
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}