读取流,重写流,删除文件,重新生成
文件的操作,好像java只能这样做
文件的操作,好像java只能这样做
解决方案 »
- as中的xml解析,求教!
- NetBeans中JSP连接MySQL的问题
- 页面有个连接,点了就开始下载文件,如何在JSP页面中找到这个连接?
- 急急急急 急 急!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 如何实现在表单中将二进制数据传递给servlet?
- 购习JAVA编程思想2(thinking in java)
- 要确保javabeans能正常运行,在windows2000下安装jsp环境时要注意哪些?
- 求大家解决jasperreportreport 传参数问题
- 我用的是tomcat4.1.29,在其中建立了一个虚拟路径运行其中的index.jsp一切正常,可是为什么当我修改了index.jsp后,在ie里看到的还是以前没
- 高手请进一个关于自定义标签库的问题。up有分
- Session的一个操作控制的问题
- Internal Servlet Error:
文件如下:
name: ffff ssss
seq
001 9 k aaa
002 9 k kkk
mcd sss
dsdif
003 7 k jfksname: daad ssss
seq
001 9 k aaa
002 9 k kkkname: sssa ssss
seq
001 9 k aaa
002 9 k kkk
mcd sss
dsdif
003 7 k jfks
004 2 ksjfka
mnak
kadjfa kasjdf
005 3 k ksajf
我想删除002到003之间的行和004到005之间的行.
请各位大侠帮忙!
name: ffff ssss
seq
001 9 k aaa
002 9 k kkk
003 7 k jfksname: daad ssss
seq
001 9 k aaa
002 9 k kkkname: sssa ssss
seq
001 9 k aaa
002 9 k kkk
003 7 k jfks
004 2 ksjfka
005 3 k ksajf
String nameofonlin="d:\\onlineusers.txt";
BufferedReader filereader=new BufferedReader(new FileReader(nameofonlin));
String readonline=null;
int rowcount=0;
String ip=request.getRemoteAddr();
int writeonline=0;
FileWriter f=new FileWriter(nameofonlin,true);
PrintWriter myout=new PrintWriter(f);
myout.println(ip+"\n");
myout.close(); readonline=filereader.readLine();
while(readonline.length()+1>rowcount)
{
if(ip.equals(readonline))
{
}
rowcount++;
filereader.close();
}我是像上面这样遍历所有行取得与一设定值相同的值
然后删除之,
不过我不知道怎么样删除能否告之?
用RandomAccessFile
这个类中有方法可以自由的定位指针的位置,
但是个人认为操作的难度性比较大,
而且性能不一定高
/**
* 把需修改文件读入StringBuffer
* @param filepath 模版源文件(*.html)
* @return StringBuffer 把源文件转换成StringBuffer
* @throws IOException
*/
public static StringBuffer readFile(String filepath)
throws IOException {
StringBuffer sbf = new StringBuffer();
byte buf[] = new byte[2048];
FileInputStream fis = new FileInputStream(filepath);
while(fis.read(buf) != -1) {
sbf.append(new String(buf));
buf = new byte[2048];
}
fis.close();
return sbf;
}
/**
* 根据StringBuffer生成文件
* @param filepath 保存文件的路径,最后生成的模版文件(*.jsp)
*/
public static void writeFile(String filepath,StringBuffer source)
throws IOException {
FileOutputStream fos = new FileOutputStream(filepath);
byte buf[] = new byte[source.length()];
buf = source.toString().getBytes();
fos.write(buf);
fos.close();
} /**
* 用于StringBuffer中的字符串替换
* @param source 需要替换的StringBuffer
* @param strS 被替换的字符串
* @param strD 用于替换的字符串
* @return 返回一个StringBuffer
*/
public static StringBuffer replace(StringBuffer source,String strS,String strD) {
int start = source.indexOf(strS);
int offset = start + strS.length();
if((start != -1) && (offset > start)) {
source.replace(start,offset,strD);
}
return source;
} /**
* 根据开始strStart和strEnd提取包含在source中的这段字符串,用于生成头、尾文件
* @param source 源StringBuffer
* @param strStart 开始标记
* @param strEnd 结束标记
* @return 返回提取后的StringBuffer
*/
public static StringBuffer takeout(StringBuffer source,String strStart,String strEnd) {
int start = source.indexOf(strStart) + strStart.length();
int end = source.indexOf(strEnd);
if(end > start)
source = new StringBuffer(source.substring(start,end));
return source;
}