import?java.io.BufferedReader;
為萊州等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及萊州網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為做網(wǎng)站、網(wǎng)站建設、萊州網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
import?java.io.File;
import?java.io.FileNotFoundException;
import?java.io.FileReader;
import?java.io.FileWriter;
import?java.io.IOException;
import?java.io.PrintWriter;
public?class?Day02_B?{
static?String?path="K:/Test/Name.txt";//路徑
public?static?void?main(String[]?args)?{
File?fileText=new?File(path);//文件
if(fileText.canExecute())?//如果文件存在就繼續(xù)
setText(fileText,"剛","xx");//“剛”指定改為:“XX”
}
private?static?void?setText(File?fileText,String?target,String?src)?{//修改
BufferedReader?br=null;
PrintWriter?pw=null;
StringBuffer?buff=new?StringBuffer();//臨時容器!
String?line=System.getProperty("line.separator");//平臺換行!
try?{
br=new?BufferedReader(new?FileReader(fileText));
for(String?str=br.readLine();str!=null;str=br.readLine())?{
if(str.contains(target))?
str=str.replaceAll(target,src);
buff.append(str+line);
}
pw=new?PrintWriter(new?FileWriter(fileText),true);
pw.println(buff);
}?catch?(FileNotFoundException?e)?{
e.printStackTrace();
}catch?(IOException?e)?{
e.printStackTrace();
}finally?{
if(br!=null)
try?{
br.close();
}?catch?(IOException?e)?{
e.printStackTrace();
}
if(pw!=null)?
pw.close();
}
}
}
整體思路如下:
1、用 FileInputStream 讀取文件內(nèi)容;
2、修改內(nèi)容,string操作;
3、用 FileOutputStream 寫文件內(nèi)容;
參考例子如一下:
import java.io.*;
public class TestBufferStream{
public static void main(String[] args){
try{
BufferedReader in = new BufferedReader(new FileReader("in.txt"));
BufferedWriter out = new BufferedWriter(new FileWriter("out.txt"));
String s = null;
while((s = in.readLine()) != null){
out.write(s);
out.newLine();
}
out.flush();
in.close();
out.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
以下程序?qū)崿F(xiàn)的功能是批量修改文件后綴:
import java.io.*;
/**
* JAVA實現(xiàn)的批量更改文件后綴名的程序。
*
* @author rommnn
*/
public class ExtBatchRename {
/**
* 修改程序。br
* 內(nèi)部遞歸調(diào)用,進行子目錄的更名
*
* @param path
* 路徑
* @param from
* 原始的后綴名,包括那個(.點)
* @param to
* 改名的后綴,也包括那個(.點)
*/
public void reName(String path, String from, String to) {
File f = new File(path);
File[] fs = f.listFiles();
for (int i = 0; i fs.length; ++i) {
File f2 = fs[i];
if (f2.isDirectory()) {
reName(f2.getPath(), from, to);
} else {
String name = f2.getName();
if (name.endsWith(from)) {
f2.renameTo(new File(f2.getParent() + "/" + name.substring(0, name.indexOf(from)) + to));
}
}
}
}
public static void main(String[] args) {
ExtBatchRename rf = new ExtBatchRename();
rf.reName("d:/", ".jsp", ".html");
}
}
我首先說下思路吧,你想更改文件中的字符串,首先你要使用java中的io把文件里面的內(nèi)容全部讀到一個字符串當中,然后對這個字符串進行查找替換的操作,最后在把你更改之后的這個字符串寫進文件當中,當然是覆蓋掉這個文件。
這里我就用到FileOutputStream FileInputStream BufferedReader PrintWriter
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
try {
File file = new File("c:\\abc.txt");
// 建立一個file對象,參數(shù)就是你想訪問文件的路徑,這里我就不驗證文件是否存在了
// 查下api即可
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(file)));
List list =new ArrayList();
//定義一個集合存放每一行的字符串
while(true){
String str=br.readLine();
//讀取文件當中的一行
if(str==null) break;
//如果讀取的是空,也就是文件讀取結(jié)束 跳出循環(huán)
int index=str.indexOf("zhidao");
//看此行的是否包含zhidao
if(index!=-1){
str.replace("zhidao", "answer");
//如果包含就把zhidao 換成answer
}
list.add(str);
//把修改之后的str放到集合當中
}
br.close();
PrintWriter pw=new PrintWriter(file);
//建立一個輸出流,把東西寫入文件
for(int i=0;ilist.size();i++){
String str =(String)list.get(i);
//從集合當中取出字符串
pw.println(str);
//把該字符串寫入文件當中
}
pw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
importjava.io.IOException;/××只能給當前用戶賦予對該文件的權限,調(diào)用createNewFile()方法默認的權限是644.×/publicclassFilePermission{publicstaticvoidmain(String[]args){try{Filefile=newFile("/home/test3.txt");if(