您的位置:首页 > 编程语言 > Java开发

Java--获取指定格式的文件并批量修改文件

2015-04-20 22:39 525 查看
1. 获取指定目录下的所有指定格式的文件

2. 修改该格式下指定的字符串

3. Invoke getFileWithSuffix(filePath, fileSuffix, srcStr, desStr), 传入的参数包括文件目录, 文件格式, 要替换的字符串, 替换成的字符串

**GetFileFromTargetPath class which used to search all the expected files in the pass path

package com.sam.entity;

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

public class GetFileFromTargetPath {

private static Scanner scanner;
private static int count;
private static StringReplaceProcessor processor;

/**
*
* @param filePath
* @param fileSuffix
* @throws IOException
*/
private static void getFileWithSuffix(String filePath, String fileSuffix, String fromStr, String toStr) throws IOException {
// TODO Auto-generated method stub
File file = new File(filePath);

//new a instance of string replace processor
processor = new StringReplaceProcessor();
if (file.isDirectory()) {
File[] dirFiles = file.listFiles();
//int count = 0;
for (File f : dirFiles) {
if (f.isDirectory()) {
//recursively call the getFileWithSuffix method is path still a directory
getFileWithSuffix(f.getAbsolutePath(), fileSuffix, fromStr, toStr);
} else {
//print the file name of the target path
if (f.getName().endsWith(fileSuffix)) {
System.out.println(f.getAbsolutePath());
count++;
processor.stringReplaceProcess(f.getAbsolutePath(), fromStr, toStr);
}
}
}
} else {
//print the file name of the target path
if (file.getName().endsWith(fileSuffix)) {
System.out.println(file.getAbsolutePath());
processor.stringReplaceProcess(file.getAbsolutePath(), fromStr, toStr);
} else {
System.out.println("No file found in the path : " + filePath + " with suffix " + fileSuffix);
}

}
}

public static void main(String[] args) throws IOException {
scanner = new Scanner(System.in);

//input the files path from console
System.out.print("Please input the files path :");
String filePath = scanner.next();
System.out.println();
System.out.print("Please input the files suffix : ");
String fileSuffix = scanner.next();
System.out.println();
System.out.print("Please input the source string: ");
String srcStr = scanner.next();
System.out.println();
System.out.print("Please input the target string: ");
String desStr = scanner.next();

getFileWithSuffix(filePath, fileSuffix, srcStr, desStr);
if (count == 0)
System.out.println("No file found in the path : " + filePath + " with suffix " + fileSuffix);

}

}


**StringReplaceProcessor class which used to replace the source string to target string
package com.sam.entity;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.TreeMap;

public class StringReplaceProcessor {
private static String[] words;

public void stringReplaceProcess(String srcFile, String fromStr,
String toStr) throws IOException {
// TODO Auto-generated method stub
System.out.println("Invoking the replace process...");
File inFile = new File(srcFile);
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(inFile), "utf-8"));
File outFile = new File(inFile + ".tmp");
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),"utf-8")));

String reading;

Integer count = 0;

TreeMap<String, Integer> map = new TreeMap<String, Integer>();

while ((reading = in.readLine()) != null) {
words = reading.trim().split(" ");

for (int i=0; i<words.length; i++) {
if (map.containsKey(words[i])){
//count++;
Integer tempCount = (Integer)map.get(words[i]);
map.put(words[i], new Integer(tempCount.intValue() + 1));//the keyword count increase 1
//System.out.println("The tempcount for " + words[i] + " is " + new Integer(tempCount.intValue() + 1));
} else {
map.put(words[i], 1);
}
}
out.println(reading.replaceAll(fromStr, toStr));

}
out.close();
in.close();
inFile.delete();
outFile.renameTo(inFile);
count = map.get(fromStr);
System.out.println("The total replacement from " + fromStr + " to " + toStr + " is " + (count != null?count:0));
System.out.println("End of invoking the replace process!!!");
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 批量修改