读取文件问题 :在线等待
1.我想把数据写入文件 如:file.txt 要求后写入的不覆盖前面的内容
2.从文件中任意位置读取数据,并对该行进行修改,然后将其修改后的数据覆盖该行.
张三|20|四川
小唐|23|重庆
李四|18|内江
现在我要取出小唐那行数据并将小唐改为小陈 ,怎么办啊!谢谢大哥大姐们
问题点数:100、回复次数:13Top
1 楼rainboy20024(笨猪)回复于 2004-04-03 11:09:12 得分 0
怎么?没人回答啊?Top
2 楼programer23(亮子)回复于 2004-04-03 11:25:23 得分 0
共同学习
我帮你顶顶
在帮你转转帖子。Top
3 楼lixiang823517(泥浆)回复于 2004-04-03 11:31:02 得分 0
从文件读出数据,放为VECTOR,或者hash*类的东西,修改后再覆盖原来的~
Top
4 楼runki(runki)回复于 2004-04-03 11:33:47 得分 0
同意、楼上的Top
5 楼songbo_pp(想换个工作)回复于 2004-04-03 12:14:22 得分 10
用java.io.RandomAccessFile。
RandomAccessFile(File file, String mode),mode为"rw",可以以追加模式打开文件。
seek(long l)可以实现文件光标定位。
Top
6 楼Danger2000(飞鱼)回复于 2004-04-03 13:06:44 得分 25
同意楼上的方法,不过建议把每行都应该是相等的字符,这样用seek()就比较方便定位在某一行上。不够的可以补空格,读取的时候可以用StringTokenize类进行出去,并用trim()去掉多余空格。Top
7 楼mbl(小马)回复于 2004-04-03 15:15:07 得分 5
UOPTop
8 楼rainboy20024(笨猪)回复于 2004-04-03 16:00:53 得分 0
lixiang823517大哥:
不会吧,取出来再放回去,如果我有很多数据呢?Top
9 楼rainboy20024(笨猪)回复于 2004-04-03 16:04:26 得分 0
Danger2000(飞鱼)大哥,能否给点定位的代码就像,将文件指针定位于23的2的位置,谢谢大哥了Top
10 楼Danger2000(飞鱼)回复于 2004-04-03 16:44:19 得分 20
to rainboy20024(鹰鹰) :
long lineLength = 每行的长度;
long nameLength = 姓名部分的长度;
in.seek(lineLength * 2 + nameLength +1); //把指针定位在23的2的位置前Top
11 楼Danger2000(飞鱼)回复于 2004-04-03 16:45:19 得分 0
不好意思,错了,是定位在18的1之前。。。Top
12 楼fruitking(坚持我的选择)回复于 2004-04-03 17:03:30 得分 40
可以跳过已经写入的文件长度再写
试试
import java.io.*;
public class myFile
{
public myFile()
{
init();
RecordAppend("xuguo");
}
public void init()
{
try
{
String Record="zhoukun";
String myFilePath="D:/jspServer";
String myFileName="myWriteFile.txt";
File dir=new File(myFilePath,"newFile");
dir.mkdir();
File f=new File(dir,myFileName);
FileOutputStream o=new FileOutputStream(f);
BufferedOutputStream myin=new BufferedOutputStream(o);
byte c[]=Record.getBytes();
myin.write(c);
myin.flush();
myin.close();
}
catch(IOException e)
{
System.out.println(e);
}
}
public void RecordAppend(String strAppend)
{
try
{
int filelength;
int writelength;
String myFilePath="D:/jspServer/newFile";
String myFileName="myWriteFile.txt";
File f=new File(myFilePath,myFileName);
FileOutputStream o=new FileOutputStream(f);
BufferedOutputStream myin=new BufferedOutputStream(o);
byte c[]=strAppend.getBytes();
filelength=(int)f.length();
writelength=strAppend.length();
myin.write(c,filelength,writelength);
myin.flush();
myin.close();
}
catch(IOException e)
{
System.out.println(e);
}
}
public static void main(String args[])
{
new myFile();
}
}Top
13 楼rainboy20024(笨猪)回复于 2004-04-03 18:33:29 得分 0
谢谢大家,还麻烦大家一下:
如果我要用文件进行存储,并在图形界面进行查询,譬如:我要查询"小唐"该怎么找啊,用VECTOR,或者 hash* 之类吗?还是读取每行,并进行切割,比较?
Top




