文件里存的是:101 王五 男 22 南京 0905 修改文件 :我想先把此条记录先用split(" ")分开,然后再比较,当我输入编号101时 显示此条记录,然后再修改此条记录的某个数据。其他不变
删除文件: 当输入编号101时,即删除此条记录
请大家帮忙写写,给点思路,感谢?
public void modifyStu(){
// TODO
}
public void deleteStu(){
//TODO
}
删除文件: 当输入编号101时,即删除此条记录
请大家帮忙写写,给点思路,感谢?
public void modifyStu(){
// TODO
}
public void deleteStu(){
//TODO
}
2. 修改记录时,首先输入序号->到vector查找对应该序号的记录的存放位置,假设为offset;
3. 定位到文件的offset位置,修改该这条记录,并保存即可;
4. 删除记录时,思路和上相同,只是记录被删除的情况要同步反应在vector容器中;
5. 在程序退出时,要记得将vector中的数据保存到硬盘上作为索引文件;
6. 在程序启动是,要记得将硬盘的索引文件读入vector容器中。对于上面提及的vector容易,楼主可以自己写一个
[code=BatchFile]
101 wangwu male 22 nanking 0905
102 zhaoliuOldDataInColumn1 femaleOldDataInColumn2 16OldDataInColumn3 nanking4 09055
[/code]
ReadWriteFile.java如下import java.io.*;
/**
*
* 功能描述:创建TXT文件并进行读、写、修改操作
*
*/
public class ReadWriteFile {
public static BufferedReader bufread;
// 指定文件路径和名称
private static String path = "D:/lord.txt";
private static File filename = new File(path);
private static String readStr = ""; public static String readTxtFile(String no) {
String read;
FileReader fileread;
try {
fileread = new FileReader(filename);
bufread = new BufferedReader(fileread);
try {
while ((read = bufread.readLine()) != null) {
//readStr = readStr + read + "\r\n";
String pattern = "\\s";
String newNo = read.split(pattern)[0];
if(newNo.equals(no))
{
readStr =read;
break;
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(readStr);
return readStr;
}
public static void replaceTxtByStr(String oldStr,String replaceStr) {
String temp = "";
try {
File file = new File(path);
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
StringBuffer buf = new StringBuffer(); // 保存该行前面的内容
for (int j = 1; (temp = br.readLine()) != null
&& !temp.equals(oldStr); j++) {
buf = buf.append(temp);
buf = buf.append(System.getProperty("line.separator"));
} // 将内容插入
buf = buf.append(replaceStr); // 保存该行后面的内容
while ((temp = br.readLine()) != null) {
buf = buf.append(System.getProperty("line.separator"));
buf = buf.append(temp);
} br.close();
FileOutputStream fos = new FileOutputStream(file);
PrintWriter pw = new PrintWriter(fos);
pw.write(buf.toString().toCharArray());
pw.flush();
pw.close();
} catch (IOException e) {
e.printStackTrace();
}
} /**
* main方法测试
*
* @param s
* @throws IOException
*/
public static void main(String[] s) throws IOException {
//读102号数据
String no = "102";
ReadWriteFile.readTxtFile(no);
String[] strs = readStr.split("\\s");
//改第1个数据:
strs[1] = "新的数据";
String newLine ="";
for (int i = 0; i < strs.length; i++) {
newLine+=strs[i]+" ";
}
ReadWriteFile.replaceTxtByStr(readStr,newLine);
//读102号数据
no = "102";
ReadWriteFile.readTxtFile(no);
}
}