public class DoTXT {
// 定义成员变量:路径,文件对象,临时变量
private String path; // 文件路径
private File f;
private FileReader fr; // 所需文件流对象
private FileWriter fw;
private BufferedReader br;
private BufferedWriter bw;
private StringBuilder sb = new StringBuilder(); // 文本处理器
private String tmp; // 临时文本
private String product = "";// 结果文本
private int count = 0; // 临时计数器// 构造方法
public DoTXT(String path) {
this.path = path;
f = new File(path); // 建立路径// 创建文件
if (!f.exists())
try {
f.createNewFile();
System.out.println("文件已创建");
} catch (IOException e) {
System.err.println("文件创建失败!");
}
}// 读取文件内容
public String doRead() {
tmp = read();//
sb.setLength(0); // 初始化变量
product = ""; // 初始化变量
return tmp;
}// 查找文件内容
public String doFind(String... s) {
tmp = read(s);//
sb.setLength(0); // 初始化变量
product = ""; // 初始化变量
return tmp;
}// 文件处理方法
// 封装了读取和查找功能
// 当参数数组长度为0时为读取,当参数数组长度不为0时为查找
private String read(String... s) {
// 包装流对象
try {
fr = new FileReader(f);
br = new BufferedReader(fr);
} catch (FileNotFoundException e) {
e.printStackTrace();
return "";
}// 读取内容
try {
while ((tmp = br.readLine()) != null) {
sb.append(tmp);// 找到目标单词,并用括号括起来
if (s.length != 0) {// 判断是否需要进行查找
for (String str : s) {// 遍历关键词
while ((count = sb.indexOf(str, count)) != -1) {
sb.insert(count, ‘(‘);
count = count + str.length() + 1;// 从找到的关键词尾,开始查找下一个关键词
sb.insert(count, ‘)‘);
}
count = 0;// 重置查找不同关键词的起始点
}
}// 将行组合起来
product += sb.toString();
System.out.println(product);
product += ‘\n‘;
}
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭文件流
try {
br.close();
} catch (IOException e) {
} finally {
try {
fr.close();
} catch (IOException e) {
}
}
}return product; // 返回内容
}// 覆盖或追加文件内容
public void doWrite(String str, boolean byAppend) {
// 处理数据
if (byAppend) {
str = this.doRead() + str;
}
// 包装流对象
try {
fw = new FileWriter(f);
bw = new BufferedWriter(fw);
} catch (IOException e) {
e.printStackTrace();
System.out.println("写入失败");
}// 写入数据
try {
bw.write(str);
bw.flush();
} catch (IOException e) {
e.printStackTrace();
System.out.println("写入失败");
}
// 关闭文件流
try {
br.close();
} catch (IOException e) {
} finally {
try {
fr.close();
} catch (IOException e) {
}
}
}public static void main(String[] args) {
DoTXT txt = new DoTXT("txt.txt");
// txt.doWrite(txt.doFind(args), false);System.out.println(txt.doRead());
}
}
文本文件处理练习DoTXT,码迷,mamicode.com