import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SearchOrReplaceKeyword {
public static int count = 1;// 用于统计数量
/**
* 测试
*/
public static void main(String[] args) {
replaceAllFile(new File("C:/Documents and Settings/Administrator/桌面/new/tract"),".xsl","@StatisticDate","@ReportStatisticDate");
replaceAllFile(new File("C:/Documents and Settings/Administrator/桌面/new/tract"), ".xsl", "<p class=\"reportdetail\">没有数据</p>", "<p class=\"reportdetail\">没有数据!</p>");
System.out.println("end");
}
/**
* 搜索到要查找的关键字就打印其文件名
*
* @param dir:文件目录
* @param fileType:文件类型
* @param keyword:要查找的关键字,这个关键字是正则表达式的形式
*/
public static void searchFile(File dir, String fileType, String keyword) {
if (dir.isDirectory()) {
for (File file : dir.listFiles()) {
if (file.isDirectory()) {
searchFile(file, fileType, keyword);
} else {
if (file.getName().endsWith(fileType)) {
String path = getFilePath(file, keyword);
if (null != path) {
System.out.println(path);
}
}
}
}
}
}
/**
* 返回文件路径或null
*
* @param file:被查找的文件
* @param keyword:查看文件是否包含此关键字,这个关键字是正则表达式的形式
* @return
*/
public static String getFilePath(File file, String keyword) {
BufferedReader br = null;
try {
// 读取文件
br = new BufferedReader(new FileReader(file));
String line = "";
while ((line = br.readLine()) != null) {
//if (line.contains(keyword)) {
//return file.getPath();
//}
//正则表达式的方式查找所要找的内容
Pattern pattern = Pattern.compile(keyword);
Matcher matcher = pattern.matcher(line);
if (matcher.find()) {
return file.getPath();
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
/**
* 用新的字符串替代指定的字符串
*
* @param dir:文件目录
* @param fileType:文件类型
* @param keyword:被替代的关键字
* @param newWord:替代关键字的字符串
*/
public static void replaceAllFile(File dir, String fileType, String keyword, String newWord) {
if (dir.isDirectory()) {
for (File file : dir.listFiles()) {
if (file.isDirectory()) {
replaceAllFile(file, fileType, keyword, newWord);
} else {
if (file.getName().endsWith(fileType)) {
replaceFile(file, keyword, newWord);
}
}
}
}
}
/**
* 用新的字符串替代指定的字符串
*
* @param file:文件
* @param keyword:被替代的关键字
* @param newWord:替代关键字的字符串
*/
public static void replaceFile(File file, String keyword, String newWord) {
// StringBuilder stringBuilder = new StringBuilder();
StringBuffer stringBuilder = new StringBuffer("");
BufferedReader br = null;
BufferedWriter bw = null;
boolean flag = false;
try {
// 读取文件
br = new BufferedReader(new FileReader(file));
String line = "";
while ((line = br.readLine()) != null) {
if (line.contains(keyword)) {
line = line.replaceAll(keyword, newWord);
flag = true;
}
stringBuilder.append(line);
stringBuilder.append("\n");
}
if (flag) {
// 写文件
bw = new BufferedWriter(new FileWriter(file));
//这里用了一个字符转换的类
bw.write(new ChangeCharest().toGBK(stringBuilder.toString()));
System.out.println((count++) + "修改了" + file.getPath());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != bw) {
bw.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if (null != br) {
br.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
import java.io.UnsupportedEncodingException;
/** *
* 转换字符串的编码
*
*/
public class ChangeCharest {
/** *//** 7位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 */
public static final String US_ASCII = "US-ASCII";
/** *//** ISO拉丁字母表 No.1,也叫做ISO-LATIN-1 */
public static final String ISO_8859_1 = "ISO-8859-1";
/** *//** 8 位 UCS 转换格式 */
public static final String UTF_8 = "UTF-8";
/** *//** 16 位 UCS 转换格式,Big Endian(最低地址存放高位字节)字节顺序 */
public static final String UTF_16BE = "UTF-16BE";
/** *//** 16 位 UCS 转换格式,Litter Endian(最高地址存放地位字节)字节顺序 */
public static final String UTF_16LE = "UTF-16LE";
/** *//** 16 位 UCS 转换格式,字节顺序由可选的字节顺序标记来标识 */
public static final String UTF_16 = "UTF-16";
/** *//** 中文超大字符集 **/
public static final String GBK = "GBK";
public static final String GB2312 = "GB2312";
/** *//** 将字符编码转换成US-ASCII码 */
public String toASCII(String str) throws UnsupportedEncodingException{
return this.changeCharset(str, US_ASCII);
}
/** *//** 将字符编码转换成ISO-8859-1 */
public String toISO_8859_1(String str) throws UnsupportedEncodingException{
return this.changeCharset(str, ISO_8859_1);
}
/** *//** 将字符编码转换成UTF-8 */
public String toUTF_8(String str) throws UnsupportedEncodingException{
return this.changeCharset(str, UTF_8);
}
/** *//** 将字符编码转换成UTF-16BE */
public String toUTF_16BE(String str) throws UnsupportedEncodingException{
return this.changeCharset(str, UTF_16BE);
}
/** *//** 将字符编码转换成UTF-16LE */
public String toUTF_16LE(String str) throws UnsupportedEncodingException{
return this.changeCharset(str, UTF_16LE);
}
/** *//** 将字符编码转换成UTF-16 */
public String toUTF_16(String str) throws UnsupportedEncodingException{
return this.changeCharset(str, UTF_16);
}
/** *//** 将字符编码转换成GBK */
public String toGBK(String str) throws UnsupportedEncodingException{
return this.changeCharset(str, GBK);
}
/** *//** 将字符编码转换成GB2312 */
public String toGB2312(String str) throws UnsupportedEncodingException{
return this.changeCharset(str,GB2312);
}
/** *//**
* 字符串编码转换的实现方法
* @param str 待转换的字符串
* @param newCharset 目标编码
*/
public String changeCharset(String str, String newCharset) throws UnsupportedEncodingException{
if(str != null){
//用默认字符编码解码字符串。与系统相关,中文windows默认为GB2312
byte[] bs = str.getBytes();
return new String(bs, newCharset); //用新的字符编码生成字符串
}
return null;
}
/** *//**
* 字符串编码转换的实现方法
* @param str 待转换的字符串
* @param oldCharset 源字符集
* @param newCharset 目标字符集
*/
public String changeCharset(String str, String oldCharset, String newCharset) throws UnsupportedEncodingException{
if(str != null){
//用源字符编码解码字符串
byte[] bs = str.getBytes(oldCharset);
return new String(bs, newCharset);
}
return null;
}
public static void main(String[] args) throws UnsupportedEncodingException{
ChangeCharest test = new ChangeCharest();
String str = "This is a 中文的 String!";
System.out.println("str:" + str);
String gbk = test.toGBK(str);
System.out.println("转换成GBK码:" + gbk);
System.out.println();
String ascii = test.toASCII(str);
System.out.println("转换成US-ASCII:" + ascii);
System.out.println();
String iso88591 = test.toISO_8859_1(str);
System.out.println("转换成ISO-8859-1码:" + iso88591);
System.out.println();
gbk = test.changeCharset(iso88591, ISO_8859_1, GBK);
System.out.println("再把ISO-8859-1码的字符串转换成GBK码:" + gbk);
System.out.println();
String utf8 = test.toUTF_8(str);
System.out.println();
System.out.println("转换成UTF-8码:" + utf8);
String utf16be = test.toUTF_16BE(str);
System.out.println("转换成UTF-16BE码:" + utf16be);
gbk = test.changeCharset(utf16be, UTF_16BE, GBK);
System.out.println("再把UTF-16BE编码的字符转换成GBK码:" + gbk);
System.out.println();
String utf16le = test.toUTF_16LE(str);
System.out.println("转换成UTF-16LE码:" + utf16le);
gbk = test.changeCharset(utf16le, UTF_16LE, GBK);
System.out.println("再把UTF-16LE编码的字符串转换成GBK码:" + gbk);
System.out.println();
String utf16 = test.toUTF_16(str);
System.out.println("转换成UTF-16码:" + utf16);
String gb2312 = test.changeCharset(utf16, UTF_16, GB2312);
System.out.println("再把UTF-16编码的字符串转换成GB2312码:" + gb2312);
}
}
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
//文件内容大写转小写
public class UpperToLower
{
public static void main(String [] args){
//contentUpperToLower(new File("D:/common2.css"));
replaceAllFile(new File("D:/css"), "css");
}
public static void replaceAllFile(File dir, String fileType) {
if (dir.isDirectory()) {
for (File file : dir.listFiles()) {
if (file.isDirectory()) {
replaceAllFile(file, fileType);
} else {
if (file.getName().endsWith(fileType)) {
contentUpperToLower(file);
}
}
}
}
}
private static void contentUpperToLower(File file)
{
StringBuffer stringBuilder = new StringBuffer("");
BufferedReader br = null;
BufferedWriter bw = null;
// boolean flag = false;
try {
// 读取文件
br = new BufferedReader(new FileReader(file));
String line = "";
int count = 0;
while ((line = br.readLine()) != null) {
line = line.toLowerCase();
stringBuilder.append(line);
stringBuilder.append("\n");
count++;
}
// if (flag) {
// 写文件
bw = new BufferedWriter(new FileWriter(file));
//这里用了一个字符转换的类
bw.write(new ChangeCharest().toGBK(stringBuilder.toString()));
System.out.println((count++) + "修改了" + file.getPath());
// }
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != bw) {
bw.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if (null != br) {
br.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
分享到:
相关推荐
在Java中,`String`类提供了`equalsIgnoreCase()`方法进行不区分大小写的比较,而默认的`equals()`方法则是区分大小写的。用户可以根据需要选择合适的比较方式。 文件大小范围的设置是为了过滤掉过大或过小的文件。...
Java IO 还包括Filter流,可以用来装饰其他流,添加额外的功能,如缓冲、转换或加密。 二、commons-io-2.5.jar 功能 Apache Commons IO 提供的增强功能包括: 1. 文件操作:`FileUtils` 类提供了大量静态方法,用于...
这个工具包极大地简化了与文件、流、读写操作、转换、检查和比较相关的任务,使开发者能够更加高效地处理Java中的IO问题。下面,我们将深入探讨这个库的一些关键特性和功能。 首先,`commons-io-2.4.jar`是主库文件...
这个库提供了一系列与输入输出操作相关的实用工具类,极大地简化了Java程序员处理IO任务的复杂性。标题提到的"commons-io-2.4.jar"是这个库的一个版本,版本号为2.4,表明它是官方发布的稳定版本,对先前版本进行了...
这个库包含了大量实用类和方法,使得在处理文件、字节流、字符流、过滤器和转换时更加便捷。"commons-io-2.7-bin.zip"是Apache Commons IO库的版本2.7的二进制分发包,它包含了编译好的Java类库供开发者直接使用。 ...
Apache Commons FileUpload与Apache Commons IO是Java开发中处理文件上传的两个重要库,它们在Web应用中被广泛使用。这两个库分别提供了不同的功能,但在处理文件上传时常常一起使用。 `commons-fileupload-1.2.1....
在实际开发中,Apache Commons IO库极大地提高了Java程序员处理文件I/O操作的效率和代码的可读性。通过引入"commons-io-2.11.0-bin.zip"到项目中,你可以轻松地利用这些预封装的工具类,减少自己编写低级I/O代码的...
这个库提供了大量的工具类,扩展了Java标准库中关于I/O的功能,使得开发者在处理文件、流、字符转换、过滤器和读写操作时更加方便。在这个"commons-io-1.4.rar"压缩包中,包含了两个子文件:`commons-io-1.4-bin.zip...
Apache Commons FileUpload与Apache Commons IO是Java开发中用于处理文件上传功能的重要库。这两个库在Web应用程序中尤其常见,因为它们提供了处理HTTP请求中的多部分数据(如表单上传的文件)的便捷方法。 `...
对于MyBatis,虽然它主要关注数据库操作,但在处理文件时,可以先利用`Commons FileUpload`和`Commons IO`将文件保存到服务器,然后再通过MyBatis的SQL语句将文件路径或其它相关信息存入数据库。 在图片处理方面,...
无论是在处理文件、流、数据转换还是对象序列化方面,它都能显著提高开发效率,降低代码复杂度,是Java开发者不可或缺的工具之一。在实际项目中,合理运用Apache Commons IO,能让你的代码更加简洁、健壮。
在Java开发中,上传文件是一项常见的任务,而`commons-fileupload-1.3.3.jar`和`commons-io-2.6.jar`是Apache Commons项目中的两个重要库,专门用于处理HTTP请求中的文件上传功能。这两个库为开发者提供了便捷、高效...
"commons-io-2.8.0.rar"是一个包含 Commons IO 库版本2.8.0的压缩包文件,便于开发者在项目中引用和使用。 在 Commons IO 中,我们可以找到许多有用的类和方法,这些在处理文件、流、字符集转换、读写操作等方面...
Apache Commons IO 是一个Java库,包含了大量用于处理输入/输出(I/O)操作的工具类,大大简化了在Java中进行文件、流、过滤器、读写等操作的复杂性。这个压缩包“commons-io2.2”包含了版本2.2的Apache Commons IO库...
Apache Commons IO 是一个Java库,提供了大量的实用工具类来处理输入/输出操作。这个库的主要目标是弥补Java标准库在I/O操作上的不足,...对于处理文件操作的Java应用,了解并熟练使用Apache Commons IO是十分必要的。
Apache Commons IO 是一个Java库,它提供了一系列实用工具类来处理输入/输出操作。这个压缩包包含从0.1版本到2.4版本的所有Apache Commons IO的发布。这些版本跨越了多个年份,反映了该库在发展过程中的功能增强、...
- 当需要读取或写入包含文本内容的文件时,如.txt、.properties等,使用字符流更合适,因为它能处理字符编码,避免了字节流处理文本时可能出现的乱码问题。 - 在读取时,字符流会按字符大小进行读取,不会出现半个...
这个压缩包“commons-io-2.8.0-bin.zip”包含了Apache Commons IO库的版本2.8.0,这是一个广泛使用的库,尤其对于那些在Java环境中进行IO操作的开发者来说,它极大地简化了工作流程。在Java学习中,理解并掌握IO流是...
Apache Commons IO则是另一个强大的Java I/O工具包,它提供了大量的静态方法来处理文件、流、字符集等操作。在"commons-io-2.0.1.jar"这个版本中,它包含了多种文件操作函数,如读写文件、复制文件、移动文件、比较...
- `IOCase`: 用于处理大小写的敏感性,支持在文件名比较时对大小写的忽略或严格处理。 - `DirectoryWalker`: 递归遍历目录,执行指定的操作,如查找特定类型的文件。 3. **流操作** - `IOException`: 这是所有 ...