思路
想用小说作为打字练习的文章,就试着写了这个简单练习,检测字符是否为“第#章”,是的话就进行切割,因为字节流老是出错,就换了字符流,效果还不错。
一个缺陷:文章内容中出现“第#章”字眼时会识别出错。
代码
import java.io.FileReader;
import java.io.FileWriter;
import java.io.Reader;
import java.io.Writer;
public class cutUpLong {
public static void main(String[] args) throws Exception {
//1.创建IO对象,获取主文件
int suffix = 1;//后缀
Reader in = new FileReader("F:\\temp\\Dragoncopy\\Dragon.txt");
Writer out = new FileWriter("F:\\temp\\Dragoncopy\\Dragon"+suffix+".txt");
//2.切割导出为小块
int b = 0;
while((b=in.read()) != -1){
//双重检测可以较好的提高效率并且保证安全
if(b == 31532){//第一次检测,检测字符是否为关键字“第”
int b1 = in.read();int b2 = in.read();int b3 = in.read();int b4 = in.read();int b5 = in.read();int b6 = in.read();int b7 = in.read();int b8 = in.read();
if(b2 == 31456 || b3 == 31456 || b4 == 31456 || b5==31456 || b6==31456 || b7==31456 || b8==31456 ){
//第二次检测,检测后面字符中是否有关键字“章”
out.close();
suffix++;
out = new FileWriter("F:\\temp\\Dragoncopy\\Dragon"+suffix+".txt");//为切分后的小章节添加后缀
out.write(b);out.write(b1);out.write(b2);out.write(b3);out.write(b4);out.write(b5);out.write(b6);out.write(b7);out.write(b8);
}else{
out.write(b1);out.write(b2);out.write(b3);out.write(b4);out.write(b5);out.write(b6);out.write(b7);out.write(b8);
}
}else{
out.write(b);
}
}
//3.释放资源
in.close();
out.close();
}
}