protected final static Log log = LogFactory.getLog(TxtSort.class);
/**
* 将文件排序
* @author liuboen
* @param list
* @param forget
* @param suffix
* @return
*/
public static List <String> sortFileString(List <String> list,final String forget,final String suffix){
Collections.sort(list,new Comparator<String>(){
@Override
public int compare(String o1, String o2) {
String nextString=StringUtil.substringBefore(o1,suffix);
String currentString=StringUtil.substringBefore(o2,suffix);
if (nextString.indexOf(forget)!=-1) {
nextString=StringUtil.substringAfter(nextString,forget);
}
if (currentString.indexOf(forget)!=-1) {
currentString=StringUtil.substringAfter(currentString,forget);
}
//TODO 替换中文数字到阿拉伯数字
nextString=replaceD(nextString);
currentString=replaceD(currentString);
int next=Integer.parseInt(nextString);
int current=Integer.parseInt(currentString);
return next-current>0?1:-1;
}
});
return list;
}
/**
* 用于读取多个文件
* @author liuboen
* @param args
*/
public static void main(String[] args) throws IOException{
String regxString="诛仙";
String suffix=".txt";
String path="d:/资料/文档一期/穿越之1937/";
File rootFile=new File(path);
if (!rootFile.exists()||!rootFile.isDirectory()) {
System.out.println("文件不存在");
}
File [] twoFiles=rootFile.listFiles();
List <String>fileListName=new ArrayList<String>();
for (File threeFile : twoFiles) {
String fileName=threeFile.getName();
if (fileName.lastIndexOf(suffix)!=-1) {
fileListName.add(fileName);
}
}
sortFileString(fileListName,regxString,suffix);
StringBuilder builder=new StringBuilder();
for (int i = 0; i < fileListName.size(); i++) {
FileReader read = new FileReader(new File(path+fileListName.get(i).toString()));
StringBuffer sb = new StringBuffer();
char ch[] = new char[1024];
int d = read.read(ch);
while(d!=-1){
String str = new String(ch,0,d);
sb.append(str);
d = read.read(ch);
}
builder.append(sb.toString());
}
log.info(builder.toString().substring(0,200));
//System.out.println(builder.toString());
}
/**
* 替换掉文件里的中英文
* @param replaceString
* @return
*/
public static String replaceD(String replaceString){
//String replaceString="aafd^()!!~``sffdsfsdf中国*&^^%$%$$$@$#{}[]###%%^^164646";
final String regexABC="([a-zA-Z])"; //替换英文
final String regexCN="[\u4e00-\u9fa5]*"; //替换中文
final String regexElse="([\\p{Punct}&&[^\\$\\\\]])"; //替换特殊字符
replaceString=replaceString.replaceAll(regexCN, "");
replaceString=replaceString.replaceAll(regexABC,"");
replaceString=replaceString.replaceAll(regexElse,"");
replaceString=replaceString.replace("$", "");
return replaceString;
}
分享到:
相关推荐
这里我们关注的是“多文件读写操作”以及“内容排序”,这两个知识点在数据处理、数据分析和日志管理等场景中非常常见。下面将详细阐述这两个主题,并结合“GDP”这个标签进行举例说明。 1. **多文件读写操作**: ...
同时,文件读取可能涉及缓冲区,即内存中的一块区域,用于暂存数据,提高效率。 四、错误处理与文件权限 在读取文件过程中可能会遇到各种问题,如文件不存在、无权限、文件正在被其他进程使用等。因此,编写代码时...
通常,初始化可能涉及打开文件、检查文件是否存在、设置读写模式(读取或写入)等步骤。 “取总行数”功能允许开发者获取文件中的总行数,这对于数据统计或分析非常有用。实现这一功能通常需要遍历文件,但为了避免...
在处理大数据量的文本文件时,单线程读取可能会导致程序响应慢或者占用过多系统资源,因此,采用多线程技术进行读取就显得尤为重要。 在“易语言多线程读取大文本文件”这个主题中,核心概念是多线程和文件I/O操作...
3.读取的文件使用多线程处理,不影响显示界面正常操作; 4.读取过来的文件如有修改,需要保存修改部分; 5.读、写文件需要显示处理进度; 6.增加一个列表,用于展示文本文件的类型、大小、行数等。 一、功能列表 1....
VC++环境下编写的一个多线程文件读写操作的实例。简单的利用互斥变量、原子操作等技术实现多线程读写文件时的互斥,从而确保文件在操作过程中不会被破坏。例子并没有使用很多复杂的逻辑。适合刚接触多线程编程的新手...
在实际应用中,文件读写操作是非常常见的,例如读取数据文件、写入日志文件、导出报表等。 Python 语言提供了多种文件读写方式,包括文本文件、CSV 文件、Excel 文件等。 读取 CSV 文件 CSV (Comma Separated ...
在这段示例代码中,`read_step`函数负责执行具体的文件读取操作,并根据读取的结果来决定是否继续调用自身进行下一轮读取。一旦读取完成,就设置`Future`对象的结果。`read`函数则用于初始化读取操作,并返回一个`...
在Python编程中,多线程同步对于文件读写控制至关重要,因为如果不加以控制,多个线程同时访问同一文件可能会导致数据不一致或者错误。这里我们将深入探讨如何在Python中使用多线程同步来确保文件读写的安全性。 ...
// 从文件读取 1024 字节的数据 file2.write(buffer, 1024); // 向文件写入 1024 字节的数据 在实际应用中,根据需要的不同,选择不同的类来定义:如果想以输入方式打开文件,就用 ifstream 来定义;如果想以输出...
需要注意的是,由于内存映射文件可能跨越多个页,所以部分写操作可能导致整个页被刷新到磁盘,这可能会有性能影响。 5. 关闭映射:完成操作后,使用`unmap`方法释放内存映射,然后关闭文件。这会确保所有未同步的...
在Linux系统中,C语言开发过程中,经常需要与配置文件打交道,进行读取和写入操作。配置文件通常用于存储程序的设置或用户偏好,使其能够根据不同的环境或需求进行定制。下面我们将深入探讨如何在C语言中实现对配置...
文件读写监控工具是计算机系统管理和维护中不可或缺的软件,它们可以帮助用户跟踪、记录和分析系统中的文件操作,包括打开、创建、修改、删除等动作。这类工具在故障排查、性能优化、安全审计等方面有着广泛的应用。...
“文件读取”标签则进一步说明了整个过程涉及到文件的读取操作,这通常包括定位文件、打开文件、读取数据、关闭文件等步骤。在加密ini文件的上下文中,这意味着在读取文件时需要先解密数据,然后才能将其转换成程序...
在MFC(Microsoft Foundation Classes)环境下,利用Visual Studio 2015进行CSV文件的读写操作,可以方便地处理这类数据。本文将详细介绍如何在VS2015的MFC项目中实现CSV文件的读写功能。 1. **CSV文件结构** CSV...
开发者需要根据自己的需求扩展这些示例,例如添加错误处理,处理多通道数据,或者读取文件内容。 5. **使用环境**: 要使用TDM C DLL,确保你的系统已安装了National Instruments的库,并正确配置了编译环境。这...
在C语言中读取SGY文件,首先需要打开文件,可以使用`fopen()`函数,指定文件路径和打开模式(如"rb"表示以二进制读取)。接着,读取头信息,这通常涉及读取固定大小的块,并解析其中的各个字段。例如,使用`fread()`...
在处理各种数据文件时,C#提供了丰富的类库和方法,使得对不同格式的文件进行读写操作变得简单易行。本篇文章将详细探讨如何在C#中对dat文件进行读写操作,以及与CSV或txt文本文件的交互。 1. **C# CSV或txt文本...
在Android开发中,读写配置文件是常见的任务,主要用于存储应用程序的设置、用户偏好或者其他持久化数据。配置文件通常以XML或JSON格式存在,因为它们结构清晰,易于解析。本实例将详细介绍如何在Android中进行读取...
本教程聚焦于如何利用多线程实现串口(Serial Port)读写数据及文件的读写操作,这对于理解和开发高效通信系统至关重要。 首先,我们要理解什么是串口通信。串口通信是一种基于串行数据传输的通信方式,它通过一条...