文本文件处理练习DoTXT
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()); } }