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

}
}

文本文件处理练习DoTXT,码迷,mamicode.com

时间: 2024-10-14 13:55:23

文本文件处理练习DoTXT的相关文章

合并多个文本文件方法

原创作品,出自 "深蓝的blog" 博客,深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/47055589 把多个文本文件合并的小方法 怎样高速合并多个文本(如txt)文件呢? 这个事实上非常easy. (1).WIN下合并多个txt文件 实验: 建立多个txt文本文件.例如以下: 当中内容分别为: 1:a 2:b 3:c 4:d 现要把这四个txt文件合成为一个".sql"文件. 合并后的效果例如

字节流读写文本文件

字节输入流读取文本文件 InputStream基类 作用:将文件中的数据输入到内部储存器(内存)中. 读取数据的常用方法 方法名称 说明 int read() 读取一个字节数据 int read(byte[] b) 将数据读取到字节数组中 int read(byte[]b , int off , int len) 从输入流中读取最多len长度的字节,保存到字节数组b中,保存的位置从off开始 void close() 关闭输入流 int available() 返回输入流读取的估计字节数 ※  

从文本文件导入数据库

1.从文本文件导入数据  mysql> load data [local] infile '/test/file1.txt' into table sinfo fields terminated by         ' ' enclosed by '"' escaped by '"' lines terminated by '\r';          fields terminated by              字段分隔符,默认为tab  enclosed by '&q

一个实用的从文本文件读取数据进行排序的程序

程序说明 这是一个十分可靠的程序,这个程序的查错能力非常强悍.程序包含了文件操作,归并排序和字符串输入等多种技术. 程序的功能是从外部读取一个包括int型数据的文本文件,然后将它保存到内部临时数组,对数组进行排序后,以文本形式输出到指定的文件上.因为是int类型的数据,没有很严重的损失精度的问题. 正常运行要求: 包括数据的源文件内不能包括其他任何除数字和空白字符(空格,制表符,换行符)之外的任何字符,源文件最开始必须是数字字符,要保证源文件的数据计数正确.同时保证文件名有效. 完整代码 警告:

二进制文件文本文件和二进制数据

我们知道计算机是用二进制来做运算处理的,所以所有存储在计算机里面的东西都是二进制的. 我也知道这句话,但为什么总是听到别人说"二进制"文件和"文本"文件呢? 按照上面那句话来说计算机里面的都应该是二进制的啊! 底层存储的都是二进制的"数据",而不是二进制的文件. 列举一个二进制文件如下: 00000000h:0F 01 00 00 0F 03 00 00 12 53 21 45 58 62 35 34; .........S!EXb54 0000

R:从文本文件读取矩阵

在-下有一文本文件matrix.dat内容如下: 99 102 3 12 43 213.0 12 12 2 23 21 211 方式1: > A <- matrix(scan("~/matrix.dat", n = 3*4), 3, 4, byrow = TRUE) Read 12 items > A [,1] [,2] [,3] [,4] [1,] 99 102 3 12 [2,] 43 213 12 12 [3,] 2 23 21 211 方式2: > A

查询出Exchange Server的通讯组,并将通讯组成员输出到本地的文本文件中!

最近客户有一个需求,希望查询所有通讯组的成员,这个使用PS 来做的话会比较简单,怎么做?代码如下: 此POWERSHELL 在exchange 2010 执行通过! param($temppath="c:\log" #定义日志输出路径) if(!(Test-Path $temppath)) #判断日志路径是否存在,如果不存在则建立目录{New-Item -Path $temppath #建立日志路径} $groupNum=get-distributiongroup #将所有通讯组输出到

配置文件格式用哪个?文件夹+纯文本文件,XML,SQLite

稍具规模的软件都会须要一个配置文件来支持软件的执行.眼下常见的配置文件格式有纯文本.XML.SQLite.自己定义二进制格式,怎样进行选择呢? 1 纯文本--永远不会失效的文件格式 文本化是传统Unix哲学的教条之中的一个,可见其巨大威力.大多数类Unix系统的软件配置文件都是採用了纯文本格式. 比如/etc/inittab, /etc/fstab, httpd.conf等等. 1.1 长处 (1)可读性强 配置文件不仅须要让机器理解,也须要让人理解. 纯文本就很easy让人理解. (2)存在大

python 读取文本文件

Python的文本处理是经常碰到的一个问题,Python的文本文件的内容读取中,有三类方法:read().readline().readlines(),这三种方法各有利弊,下面逐一介绍其使用方法和利弊. read(): read()是最简单的一种方法,一次性读取文件的所有内容放在一个大字符串中,即存在内存中 file_object = open('test.txt') //不要把open放在try中,以防止打开失败,那么就不用关闭了 try: file_context = file_object