你可以用StreamReader一行一行地讀,直到讀完,你把讀到的每一行加到ArrayList對象中存放,然后遍歷這個ArrayList對象,對每一行進行判斷處理,不要的直接刪除,然后再用StreamWriter把ArrayList對象中的數(shù)據(jù)重寫到文件中,原來的文件覆蓋掉。
十年的云州網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都營銷網(wǎng)站建設的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調(diào)整云州建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“云州網(wǎng)站設計”,“云州網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
用“”替換文件中的內(nèi)容達到刪除目的
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中是沒有這樣的函數(shù)可以直接一調(diào)用的。但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 ){
;//執(zhí)行sql語句,這里也可將本行的語句sql保存到另一個temp.txt文件中,如果本行是被刪除的語句,就不保存了,
//執(zhí)行完后刪除data.sql,保存temp.txt就行了,
//這樣可以保證data.sql是里面的幾百萬條記錄不被讀取到內(nèi)存
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();
}