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();
}
}
}
}
分享到:
相关推荐
- 当需要读取或写入包含文本内容的文件时,如.txt、.properties等,使用字符流更合适,因为它能处理字符编码,避免了字节流处理文本时可能出现的乱码问题。 - 在读取时,字符流会按字符大小进行读取,不会出现半个...
2. **标识符**:由字母(大小写)、数字、下划线或美元符号组成,不能以数字开头,区分大小写。 3. **常量**:用字面量表示,如整数、浮点数、字符串或布尔值,一旦定义就不能更改。 4. **关键字**:Java有50个保留...
Java IO流的学习是Java开发中不可或缺的部分,它主要用于在程序中处理数据的输入与输出。在Java中,IO流被广泛应用于文件操作、网络通信、数据传输等多个场景。本章节我们将深入探讨Java IO流的基本概念、File类以及...
apache commons-io-2.CHM帮助文档 一、FileUtils 打开FileUtils的api文档,我们抽出一些工作中比较常用的方法,进行总结和讲解。总结如下: cleanDirectory:清空目录,但不删除目录。 contentEquals:比较两个...
Java IO文件操作是Java编程中不可或缺的一部分,它允许开发者与外部设备进行数据交换,包括文件、网络、内存等。在Java中,IO流是实现这一功能的核心机制。 首先,流是一个按照顺序组织的数据集合,从起点(源)...
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
* 别人给提供了字节流,而需要处理文本文件,这时候,就需要用转换流转换一下,更方便处理文本文件 * * 作用:就是一字符流的方式读取或写出文本相关的数据 * * InputStreamReader:将字节输入流包装...
Java IO 是指应用程序对外部设备的数据输入和输出,在程序中,键盘被当作输入文件,显示器被当作输出文件使用。Java 语言定义了许多类专门负责各种方式的输入输出,这些类都被放在 java.io 包中。 File 类 File 类...
Java.IO.File 类是Java标准库中的核心类之一,用于处理文件和目录的操作。这个类提供了丰富的功能,包括创建、删除、重命名文件,获取文件属性,以及管理目录结构。以下是对File类的一些关键知识点的详细说明: 1. ...
Java IO还提供了缓冲流(Buffered Stream)来提高性能,以及转换流(InputStreamReader/OutputStreamWriter)用于在字节流和字符流之间转换。 **文件操作** Java提供了多种操作文件的方法,如创建、删除、重命名和...
这些函数在处理字符串时提供了极大的灵活性,例如,你可以使用`Mid`函数来获取字符串的某个部分,使用`Replace`来替换特定的子串,或者使用`LCase`和`UCase`进行大小写转换,这对于处理用户输入或格式化输出非常有用...
文件传输基础是Java IO流应用的一个核心场景,通过IO流可以实现对文件的读写操作,包括创建、打开、修改和删除文件。在本文中,我们将深入探讨Java IO流在文件传输中的基础知识,特别是涉及文件编码的概念。 文件的...
总的来说,Java的I/O系统通过流提供了一种统一的方式来处理各种类型的输入输出操作,包括文件、网络连接、标准输入输出等。理解和熟练掌握这个系统对于编写能够高效、可靠地处理数据交换的Java程序至关重要。
Java的IO类操作是Java平台中不可或缺的一部分,它用于处理数据的输入和输出,包括文件操作、网络通信、内存数据传输等。本篇文章将详细解析Java IO类的一些核心概念和重要知识点。 1. **File类**: File类是Java中...
mount命令的作用是加载文件系统,它的用权限是超级用户或/etc/fstab中允许的使用者。 2.格式 mount -a [-fv] [-t vfstype] [-n] [-rw] [-F] device dir 3.主要参数 -h:显示辅助信息。 -v:显示信息,...
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
用 Java 编写的、协议和平台都独立的服务器端组件,使用请求/响应的模式,提供了一个基于 Java 的服务器解决方案。本文将从文件传输的基本原理入手,分析如何用 java进行文件的上传,并提出解决方案。 一、基本...
相比于传统的IO(Input/Output)模型,NIO引入了非阻塞I/O、字符转换、缓冲和通道等新特性,极大地提高了Java程序在处理I/O操作时的性能。 1. **Buffer**:在传统的IO操作中,数据通常直接在流之间传输,这可能导致...
Java IO流是Java平台中用于处理输入输出的重要机制,它允许程序与外部设备(如硬盘、网络、内存等)之间交换数据。以下是对Java IO流的详细解释: 1. **IO流的分类**: - **按方向**:Java IO流分为输入流和输出流...
Java IO流还包含缓冲流(BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter)以提高效率,转换流(InputStreamReader、OutputStreamWriter)用于字节流和字符流之间的转换,以及过滤流...