用“”替换文件中的内容达到删除目的
import java.io.InputStreamimport 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()
}