自己写的txt分割器
自己编写的一段文件分割代码:
分割文件的大小可以调用setMaxLength()方法来更改,以字节为单位。
静态成员Split.b是个开关,判断分割的小文件容量是否超过范围,超过则为false,重新建立一个新的文件继续读写。
输入输出流先定义FileRead,FileWiter,再包上BufferedReader,BufferedWriter。
每个循环都执行一次 s = br.readLine() 用来读取下一行
bw.newLine(); 换行符,因为.readLine读取一行后无视换行符,不加这行代码会导致分割文件的排版混乱。
代码运行后,出现致命错误会导致程序关闭。
找了半天,错误在这里:
while(Split.b){
x.write(s);
s = br.readLine();
}
当读到末尾,s == null时,因为判断循环的条件仍为true,所以又把空的s放进了x.write(s)
造成了 NullPointerException错误。
在循环中加上:if判断语句,问题解除。
while(Split.b){
x.write(s);
s = br.readLine();
if(s == null){
Split.b = false;
}
}
和群里的人聊天,看了这段代码,说我的代码缺乏面向对象的思想
就对程序做了修改,分成了4个类
FileCutterMain类: 主类, 基本上就是程序的对外接口-.-
FileCut类:“按行读取目标文件,并把读取的字符串传到Split类,如果分割文件容量已满,新建一个分割文件并继续输入”
CutName类:命名类,完成“对分割出的每个小文件命名”的功能
Split类: 完成“将按行读取的字符串写入分割文件,并判断分割文件容量是否达到上限”的功能
PS: 刚学了线程,想改成多线程运行,失败。。。老是出现重复读取
package FileCutter; public class FileCutterMain implements Runnable{ FileCut fc = new FileCut("E://龙枪//龙枪传承.txt"); public void run(){ fc.fileCut(); } public static void main(String[] args) { // TODO Auto-generated method stub Thread t1 = new Thread(new FileCutterMain()); t1.start(); } }
package FileCutter; import java.io.*; class FileCut{ private FileReader fr; private String copyLine; private String fileTrack; FileCut(String s){ this.fileTrack = s; } void fileCut(){ try{ fr = new FileReader(fileTrack); BufferedReader br = new BufferedReader(fr); copyLine = br.readLine(); CutName cn = new CutName(fileTrack); while(copyLine != null){ Split x = new Split(cn.cutName()); while(Split.b){ x.write(copyLine); copyLine = br.readLine(); if(copyLine == null){ Split.b = false; } } Split.b = true; } br.close(); }catch(FileNotFoundException e){ System.out.println("File Not Found."); System.exit(-1); }catch(IOException e1){ System.exit(-1); } } }
package FileCutter; class CutName { private String mainFileName; private int i = 0; CutName(String s){ mainFileName = s; } String cutName(){ String s = mainFileName.substring(0,mainFileName.length()-4); i++; return s+i+".txt"; } }
package FileCutter; import java.io.*; public class Split { private long MaxLength = 99999; private File file; static boolean b = true; Split(String name){ file = new File(name); } void setMaxLength(long i){ MaxLength = i; } void write(String s) throws IOException{ if(file.length() + s.getBytes().length >= MaxLength){ b = false; }else{ try{ FileWriter fw = new FileWriter(file,true); BufferedWriter bw = new BufferedWriter(fw); bw.write(s); bw.newLine(); bw.flush(); bw.close(); }catch(IOException e){ e.printStackTrace(); } } } }
自己写的txt分割器相关推荐
- 用C++写一个文件分割器
在成功将 mac 由 10.10 升级到 10.12 后,我发现除了新增一个并不怎么好用的 Siri 外,原来支持 NTFS 硬盘的驱动居然也成功失效了.我那块 500 GB 的东芝硬盘,虽不至于成砖 ...
- VC 写 TXT 文件分割器 附代码
TXT文件分割器主要将很大的TXT文档分割成预定大小的文档 主要通过cfile类来实现 这就是最后的效果. 选择路径主要通过cfiledlg类来实现 // TODO: Add your control ...
- java中字符串分割器_java简易文本分割器实现代码
本文实例为大家分享了java文本分割器的具体代码,供大家参考,具体内容如下 import java.io.*; class cutintopieces{ public static void main ...
- 怎样写一个拼写检查器-贝叶斯-python
怎样写一个拼写检查器 Peter Norvig 翻译: Eric You XU 原版:http://norvig.com/spell-correct.html 翻译:http://blog.youxu ...
- 章节分割器 v2.0 Beta0618 版
下载:点击此处下载 章节分割器 v2.0 Beta0618 ===================================== 一个把文本小说按照自定义条件切割成章节的软件,没有多么复杂的设置 ...
- 【ZT】怎样写一个拼写检查器
这篇真的写的很棒,用心领会吧! 怎样写一个拼写检查器 Peter Norvig 翻译: Eric You XU 上个星期, 我的两个朋友 Dean 和 Bill 分别告诉我说他们对 Google 的快 ...
- 如何写一个拼写检查器—Peter Norvig 中文翻译:徐宥
[转]如何写一个拼写检查器 本文原著:Peter Norvig 中文翻译:徐宥 上个星期, 我的两个朋友 Dean 和 Bill 分别告诉我说他们对 Google 的快速高质量的拼写检查工具感到惊奇 ...
- 怎样写一个拼写检查器
怎样写一个拼写检查器 Peter Norvig 翻译: Eric You XU link:http://blog.youxu.info/spell-correct.html 上个星期, 我的两个 ...
- java日志切割工具_JavaSwing版本的日志文件分割器
JavaSwing版本的日志文件分割器 功能: 分割比100M还大的日志为多个100M的左右的小日志 上效果图 使用方法 点击打开按钮 打开一个log文件,然后点击切割按钮 直接上代码 package ...
- java txt分割_Java分割txt文件
Java分割txt文件,现在网络小说比较长,好多朋友想用手机或者mp3之类的工具阅读,但是文件太大不方便,于是乎,我就写了一个分割文件的小程序,时间仓促,从有想法到写出初稿大概用来半个小时.先贴上来, ...
最新文章
- 【赠书】pandas创始人手把手教你利用Python进行数据分析
- Centos6.5环境中安装vsftp服务
- Thinkphp中Auth认证
- 68)deque数组
- List实现类性能和特点分析
- NVDLA软件架构和源码解析 第一章—内核驱动
- HuggingFace学习1:tokenizer学习与将文本编码为固定长度(pytorch)
- Python 3.8 新功能大揭秘
- validate.js的使用
- 学习大数据需要哪些数学知识?
- zbbz cnk
- Mac OS中Git版本更新(亲测有效)
- Tasker实现的app界面实时翻译 - 界面翻译4.0
- BZOJ4735 你的生命已如风中残烛(组合数学)
- 十二道锋味——既是食,也是人
- 不会英语可以学计算机编程吗,不会英语的人应该怎么学编程
- 天气预报实时显示系统设计
- 【源码】均衡优化器Equilibrium Optimizer(EO)
- DeepMind 发布强化学习通用算法 DreamerV3,AI 成精自学捡钻石
- matlab 2ask解调程序,2ask调制解调系统matlab源程序.doc
热门文章
- python解析mht文件_[原创].mht文件图片解析工具
- NC7WZ14P6X绝对最大额定参数
- 移动网络通信技术【移动电话网络介绍】
- ( 方框打勾 java_Java 11手册:Java 11是否在所有正确的方框中打勾?
- 公主同盟第3关(GBA)(难) 奥兰多西部
- KK集团招股书失效,首次冲刺港交所上市失利,尚未实现盈利
- 深度学习安装笔记(二)显卡、显卡驱动、CUDA 的关系以及显卡驱动升级
- Ordinal Regression with Multiple Output CNN for Age Estimation-(系列一_年龄估计)
- NVIDIA安装程序失败(组件全部未安装)
- un3.0服务器文档,ZXUNUSPP系统概述.ppt