`
boendev
  • 浏览: 242865 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

多文件读取

 
阅读更多
	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操作...

    Qt多线程读写大型文本文件项目

    3.读取的文件使用多线程处理,不影响显示界面正常操作; 4.读取过来的文件如有修改,需要保存修改部分; 5.读、写文件需要显示处理进度; 6.增加一个列表,用于展示文本文件的类型、大小、行数等。 一、功能列表 1....

    VC++ 多线程文件读写操作实例

    VC++环境下编写的一个多线程文件读写操作的实例。简单的利用互斥变量、原子操作等技术实现多线程读写文件时的互斥,从而确保文件在操作过程中不会被破坏。例子并没有使用很多复杂的逻辑。适合刚接触多线程编程的新手...

    python中的文件读写练习题(csdn)————程序.pdf

    在实际应用中,文件读写操作是非常常见的,例如读取数据文件、写入日志文件、导出报表等。 Python 语言提供了多种文件读写方式,包括文本文件、CSV 文件、Excel 文件等。 读取 CSV 文件 CSV (Comma Separated ...

    Python中使用asyncio 封装文件读写

    在这段示例代码中,`read_step`函数负责执行具体的文件读取操作,并根据读取的结果来决定是否继续调用自身进行下一轮读取。一旦读取完成,就设置`Future`对象的结果。`read`函数则用于初始化读取操作,并返回一个`...

    python多线程同步之文件读写控制

    在Python编程中,多线程同步对于文件读写控制至关重要,因为如果不加以控制,多个线程同时访问同一文件可能会导致数据不一致或者错误。这里我们将深入探讨如何在Python中使用多线程同步来确保文件读写的安全性。 ...

    c++文件读写.pdf

    // 从文件读取 1024 字节的数据 file2.write(buffer, 1024); // 向文件写入 1024 字节的数据 在实际应用中,根据需要的不同,选择不同的类来定义:如果想以输入方式打开文件,就用 ifstream 来定义;如果想以输出...

    大文件读写内存映射.rar

    需要注意的是,由于内存映射文件可能跨越多个页,所以部分写操作可能导致整个页被刷新到磁盘,这可能会有性能影响。 5. 关闭映射:完成操作后,使用`unmap`方法释放内存映射,然后关闭文件。这会确保所有未同步的...

    linux c 配置文件读写

    在Linux系统中,C语言开发过程中,经常需要与配置文件打交道,进行读取和写入操作。配置文件通常用于存储程序的设置或用户偏好,使其能够根据不同的环境或需求进行定制。下面我们将深入探讨如何在C语言中实现对配置...

    文件读写监控工具文件读写监控工具文件读写监控工具

    文件读写监控工具是计算机系统管理和维护中不可或缺的软件,它们可以帮助用户跟踪、记录和分析系统中的文件操作,包括打开、创建、修改、删除等动作。这类工具在故障排查、性能优化、安全审计等方面有着广泛的应用。...

    带密码INI文件读写_ini文件_especiallyvsy_加密_读写ini文件_文件读取_

    “文件读取”标签则进一步说明了整个过程涉及到文件的读取操作,这通常包括定位文件、打开文件、读取数据、关闭文件等步骤。在加密ini文件的上下文中,这意味着在读取文件时需要先解密数据,然后才能将其转换成程序...

    csv文件读写操作

    在MFC(Microsoft Foundation Classes)环境下,利用Visual Studio 2015进行CSV文件的读写操作,可以方便地处理这类数据。本文将详细介绍如何在VS2015的MFC项目中实现CSV文件的读写功能。 1. **CSV文件结构** CSV...

    TDMS文件读写【官方C语言例程】

    开发者需要根据自己的需求扩展这些示例,例如添加错误处理,处理多通道数据,或者读取文件内容。 5. **使用环境**: 要使用TDM C DLL,确保你的系统已安装了National Instruments的库,并正确配置了编译环境。这...

    用C语言读写SGY格式的地震数据文件-苏.rar_C语言;读写SGY格式文件_sgy_sgy文件读取_sgy读写_读写sgy文件

    在C语言中读取SGY文件,首先需要打开文件,可以使用`fopen()`函数,指定文件路径和打开模式(如"rb"表示以二进制读取)。接着,读取头信息,这通常涉及读取固定大小的块,并解析其中的各个字段。例如,使用`fread()`...

    C#进行dat文件读写操作

    在处理各种数据文件时,C#提供了丰富的类库和方法,使得对不同格式的文件进行读写操作变得简单易行。本篇文章将详细探讨如何在C#中对dat文件进行读写操作,以及与CSV或txt文本文件的交互。 1. **C# CSV或txt文本...

    Android读写配置文件

    在Android开发中,读写配置文件是常见的任务,主要用于存储应用程序的设置、用户偏好或者其他持久化数据。配置文件通常以XML或JSON格式存在,因为它们结构清晰,易于解析。本实例将详细介绍如何在Android中进行读取...

    用多线程实现串口读写数据以及文件的读写

    本教程聚焦于如何利用多线程实现串口(Serial Port)读写数据及文件的读写操作,这对于理解和开发高效通信系统至关重要。 首先,我们要理解什么是串口通信。串口通信是一种基于串行数据传输的通信方式,它通过一条...

Global site tag (gtag.js) - Google Analytics