你可以用StreamReader一行一行地读,直到读完,你把读到的每一行加到ArrayList对象中存放,然后遍历这个ArrayList对象,对每一行进行判断处理,不要的直接删除,然后再用StreamWriter把ArrayList对象中的数据重写到文件中,原来的文件覆盖掉。
十年的云州网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都营销网站建设的优势是能够根据用户设备显示端的尺寸不同,自动调整云州建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“云州网站设计”,“云州网站推广”以来,每个客户项目都认真落实执行。
用“”替换文件中的内容达到删除目的
import java.io.InputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Scanner;
import java.io.FileNotFoundException;
import java.io.IOException;
public class zifutihuan
{
protected static void rep(String ch)
{
BufferedReader bis = null;
FileWriter bos = null;
String s = null;
try
{
bis = new BufferedReader(new FileReader("1.txt"));
bos = new FileWriter("2.txt");
while(null != (s = bis.readLine()))
{
s = s.replaceAll(ch,"");
System.out.println(s);
s= s+"\r\n";
bos.write(s);
}
bos.close();
bis.close();
s = null;
}
catch(FileNotFoundException e)
{
System.out.println("未找到文件\n");
}
catch(IOException ee)
{
System.out.println("aaa");
}
}
public static void main(String args[])
{
rep("123");
}
}
Java API中是没有这样的函数可以直接一调用的。但java.io.LineNumberReader类提供了定位行号的方法,或许可以有用。这是我的方法,试试看:
try {
//从文件中读取,LineNumberReader提供方法setLineNumber(int lineNumber)定位当前行号
LineNumberReader reader = new LineNumberReader(new FileReader("data.sql"));
BufferedWriter writer = new BufferedWriter(new FileWriter("temp.txt"));
String sql ;
while( (sql=reader.readLine())!=null ){
;//执行sql语句,这里也可将本行的语句sql保存到另一个temp.txt文件中,如果本行是被删除的语句,就不保存了,
//执行完后删除data.sql,保存temp.txt就行了,
//这样可以保证data.sql是里面的几百万条记录不被读取到内存
writer.write(sql);//在这里可以判断本行是否要被删除,如要保存就将其保存至temp.txt
}
reader.close();
writer.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}