java修改文件中的记录

来源:百度知道 编辑:UC知道 时间:2024/05/28 11:55:05
我用文本文件模拟数据库,如下(db.db)
手机号 姓名 密码 话费
13698413560 QQ 123456 200
13535375171 aa 123456 100

每条记录的各个字段之间用空格隔开,我想更改手机号为13535375171,姓名为aa的话费为200,该怎么实现?

用BufferedReader.readLine()可以读取到每一行的信息,再用split()用空格把信息分隔开,然后把最后一个信息重新赋值,然后,如何重新写入数据库(DB.db,其实是个文本文件而已)呢?

我用了一个非常笨的方法,但是无法实现,总是添加不成功,Debug的话也没有找出原因:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.RandomAccessFile;

public class Query {
public void addFee(String num, String name, String fee) {
FileReader fr = null;
BufferedReader br = null;
RandomAccessFile raf = null;
try {
fr = new FileReader("e:/db.db");
br = new BufferedReader(fr);
String s = new String();
raf = new RandomAccessFile("e:/db.db", "rw");
int i = 0;
while ((s = br.readLine()) != null) {

String[] str = s.split(" &quo

建议:可以用xml来描述记录结构,解析起来也方便快捷
以下提供对象模型以及实现.如果认可代码,请加分 200,谢谢!
先看看记录的每一行是如何用JAVA面向对象思想描述

public interface RowData {
public int getColumns();
public Object getDataAtColumn(int column);
}

再看解析器有哪些功能可对外提供:

import java.io.*;
public interface RowDataParser {
public RowData[] parser(InputStream in) throws IOException;
public void save(RowData[] datas,OutputStream out) throws IOException;
}

话费单上的每行记录的实现:

final public class Fee implements RowData{
private String mobile;
private String name;
private String password;
private float fee;
public Fee(String mobileNumber,String name,String password,float fee) {
setMobile(mobileNumber);
this.setName(name);
this.setPassword(password);
this.setFee(fee);
}

public Fee(){}
public int getColumns() {return 4;}