JAVA 读取文件进行排序取出最后变更的的文件

大文件排序代码(JAVA) 值得看一看,实现大文件排序。有助理解外排序等等 立即下载

http://blog.youkuaiyun.com/thl331860203/article/details/49334217


  1. package com.util;  
  2.   
  3. import java.io.File;  
  4. import java.io.FileOutputStream;  
  5. import java.text.SimpleDateFormat;  
  6. import java.util.Arrays;  
  7. import java.util.Date;  
  8. import java.util.Iterator;  
  9. import java.util.LinkedHashMap;  
  10. import java.util.Map;  
  11. public class IoUtil {  
  12.       
  13.     /**  
  14.       * 创建文件  
  15.       * @param fileName  
  16.       * @return  
  17.       */    
  18.      public static File createFile(String filePathName)throws Exception{    
  19.         File file  = new File(filePathName);  
  20.        if(!file.exists()){  
  21.            file.createNewFile();    
  22.        }else{  
  23.            file.delete();  
  24.            file.createNewFile();  
  25.        }  
  26.        return file;    
  27.      }  
  28.        
  29.      /** 
  30.       * 写入文件 
  31.       * 自定义编码 
  32.       */  
  33.      public static boolean writeTxtFile(String content,String filePathName,String bytes)throws Exception{    
  34.           boolean flag=false;    
  35.           FileOutputStream o=null;    
  36.           try {    
  37.               String path="";  
  38.               if(filePathName.indexOf("/")>-1){  
  39.                   path=filePathName.substring(0,filePathName.lastIndexOf("/"));  
  40.               }else if(filePathName.indexOf("\\")>-1){  
  41.                   path=filePathName.substring(0,filePathName.lastIndexOf("\\"));  
  42.               }  
  43.               createDir(path);  
  44.               o = new FileOutputStream(createFile(filePathName));  
  45.               o.write(content.getBytes(bytes!=null&&!bytes.equals("")?bytes:"UTF-8"));    
  46.               o.close();    
  47.            flag=true;    
  48.           } catch (Exception e) {    
  49.            // TODO: handle exception    
  50.            e.printStackTrace();    
  51.           }    
  52.           return flag;    
  53.       }    
  54.        
  55.        
  56.      /** 
  57.       * 写入文件 
  58.       * 默认编码UTF-8 
  59.       */  
  60.      public static boolean writeTxtFile(String content,String filePathName)throws Exception{    
  61.           boolean flag=false;    
  62.           FileOutputStream o=null;    
  63.           try {    
  64.               String path="";  
  65.               if(filePathName.indexOf("/")>-1){  
  66.                   path=filePathName.substring(0,filePathName.lastIndexOf("/"));  
  67.               }else if(filePathName.indexOf("\\")>-1){  
  68.                   path=filePathName.substring(0,filePathName.lastIndexOf("\\"));  
  69.               }  
  70.               createDir(path);  
  71.               o = new FileOutputStream(createFile(filePathName));  
  72.               o.write(content.getBytes("UTF-8"));    
  73.               o.close();    
  74.            flag=true;    
  75.           } catch (Exception e) {    
  76.            // TODO: handle exception    
  77.            e.printStackTrace();    
  78.           }    
  79.           return flag;    
  80.       }    
  81.        
  82.        
  83.        
  84.      /** 
  85.       * @param destDirName 
  86.       * @return 
  87.       */  
  88.      public static boolean createDir(String destDirName) {  
  89.             File dir = new File(destDirName);  
  90.             if (dir.exists()) {  
  91.                 return false;  
  92.             }  
  93.             if (!destDirName.endsWith(File.separator)) {  
  94.                 destDirName = destDirName + File.separator;  
  95.             }  
  96.             //创建目录  
  97.             if (dir.mkdirs()) {  
  98.                 return true;  
  99.             } else {  
  100.                 return false;  
  101.             }  
  102.      }  
  103.        
  104.   
  105.        
  106.        
  107.      /** 
  108.       * TEST 
  109.       * @param args 
  110.       */  
  111.      public static void main(String[] args) {  
  112.          //Map<String,Object> map = new   LinkedHashMap<String,Object>();  
  113.          //map=mlistFiles(getPath()+"/test");  
  114.          //System.out.println("===>"+getPath());  
  115.   
  116.     }  
  117.        
  118.     /** 
  119.      * 取得静态文件生成路径 
  120.      *  
  121.      * @return 
  122.      */  
  123.     public static String getPath() {  
  124.         String path = IoUtil.class.getResource("").getPath();  
  125.         path = path.substring(0, path.indexOf("WEB-INF"));  
  126.         return path;  
  127.     }  
  128.        
  129.      /** 
  130.       * 找出变更的文件 
  131.       * @param path 
  132.       * @return 
  133.       */  
  134.      public static Map<String,Object> mlistFiles(String path){  
  135.            
  136.          File file_path=new File(path);  
  137.             //列出该目录下所有文件和文件夹  
  138.             File[] files = file_path.listFiles();  
  139.             //按照文件最后修改日期倒序排序  
  140.             Map<String,Object> map = new LinkedHashMap<String,Object>();  
  141.             //取出第一个(即最新修改的)文件,打印文件名  
  142.             if(files!=null){  
  143.                 for(int i=0;i<files.length;i++){  
  144.                     if(!files[i].isHidden()&&files[i].isFile()&&!files[i].getName().equals("sitemap.xml")){  
  145.                         String value=files[i].getName();  
  146.                         String key=String.valueOf(files[i].lastModified());  
  147.                         key=getMilliseconds(key,i);  
  148.                         //System.out.println("======key=====>"+key);  
  149.                         map.put(key,value);  
  150.                     }  
  151.                   
  152.                 }  
  153.             }  
  154.         return   orderFile(map.size(),map);  
  155.      }  
  156.        
  157.      /** 
  158.       * 解决linux读取毫秒数为000的情况 
  159.       * @param val 
  160.       * @param i 
  161.       * @return 
  162.       */  
  163.      public static String getMilliseconds(String val,int i){  
  164.          //截取后三位是否为000  
  165.          String returnStr="";  
  166.          String lastStr=val.substring(val.length()-3,val.length());  
  167.          if(lastStr.equals("000")){  
  168.              String fisrtStr = val.substring(0,val.length()-3);  
  169.              String lastNum="001";  
  170.              if(i<10){  
  171.                  lastNum="00"+String.valueOf(i);  
  172.              }else if(i<100){  
  173.                  lastNum="0"+String.valueOf(i);  
  174.              }else{  
  175.                  lastNum=i<1000?String.valueOf(i):lastNum;  
  176.              }  
  177.              returnStr=fisrtStr+lastNum;  
  178.          }else{  
  179.              returnStr=val;  
  180.          }  
  181.          return returnStr;  
  182.      }  
  183.        
  184.      /** 
  185.       * 文件排序 
  186.       * @param x 
  187.       * @param map 
  188.       * @return 
  189.       */  
  190.      public static Map<String,Object> orderFile(int x,Map<String,Object> map){  
  191.          Map<String,Object> new_map = new LinkedHashMap<String,Object>();  
  192.             Long[] arr = new Long[x];  
  193.             int i=0;  
  194.             Iterator<String> ite = map.keySet().iterator();   
  195.             while(ite.hasNext()){  
  196.                 String key  = ite.next();    
  197.                 arr[i] = Long.parseLong(key);  
  198.                 i++;  
  199.             }  
  200.             Arrays.sort(arr);  
  201.             for(int k=arr.length-1;k>=0;k--){  
  202.                 //System.out.println("==>"+arr[k]+"-->"+dateTimeToStr(arr[k])+">>>"+map.get(""+arr[k]));  
  203.                 new_map.put(String.valueOf(arr[k]), map.get(""+arr[k]));  
  204.             }  
  205.               
  206.             return new_map;  
  207.      }  
  208.        
  209.      /** 
  210.       * 将长整型数字转换为日期格式的字符串 
  211.       * @param time 
  212.       * @param format 
  213.       * @return 
  214.       */  
  215.      public static String dateTimeToStr(long time) {  
  216.        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  217.        Date date = new Date(time);  
  218.        return sf.format(date);  
  219.      }  
  220.   
  221. }  

LangGraph实战训练营-从零构建AI驱动的wiki知识库 本文深入解析 LangChain 团队开源的 Deep Agents 框架核心示例——LLM Wiki,一个基于大语言模型自动构建和维护持久化知识库的生产级 AI Agent 系统。文章从项目架构、环境搭建、核心原理到实战操作全面展开:详解 CompositeBackend 组合后端与细粒度权限控制的安全设计、四种工作模式(初始化/摄取/查询/质量检查)的完整流程、LangSmith 远程沙箱的隔离执行机制,以及人机协同审核(HITL)的实践应用。 阅读详情

相关推荐

Unity+ARFoundation 探坑之路

前两天想要上手Unity来AR方面的项目东东 ,探索过程中出现了各种各样的问题,现在将这个过程中遇到的各种各样问题梳理一下,希望后来者能开开心心上手Unity+AR。 注意:这是一篇踩坑博客,具体搭建还请自行百度。 一、ARFoundation or ARCore or ARKit Unity作为一个平台,不直接提供XR(包括VR、AR和MR)的开发包,这时就需要其他公司提供各种各样的SDK工具包...

qq_43575926的博客 7135

java 实现文件排序

实际项目开发中,我们经常会遇到文件排序的需求,比如按照文件最后的修改时间读取文件内容,或者按照文件的大小对文件排序,或者按照文件名进行排序。有的时候,直接获取文件列表后,使用for循环,然后按照指定的条件进行排序也能搞定。但是,这样的=自己造轮子的方式,容易被人吐槽。下面介绍几种现有的轮子: 1:按 文件名称 排序 public static void orderByName(String filePath) { File file = new File(filePath)..

冻梨不是梨的博客 7508

Imatest-Star模块(西门子星图)

星图分析指南:基于ISO12233标准的MTF测试方法,通过放射状射线和正弦灰度变化评估相机SFR性能。

weixin_64706696的博客 1575

java按文件大小、名称、日期排序方法

【代码】java按文件大小、名称、日期排序方法。

qq_40240091的博客 1952

避坑指南:DDR4内存条Margin测试Fail?从Intel RMT工具到PCB Layout的完整排错思路

本文深入探讨了DDR4内存条在Margin测试中Fail的完整排错思路,从Intel RMT工具分析到PCB Layout优化。通过实战案例,详细解析了信号完整性问题的诊断与解决方案,包括拓扑结构影响、传输线参数优化及HyperLynx仿真验证,为硬件设计工程师提供了宝贵的避坑指南。

weixin_42530458的博客 454

一篇把 Transport 做到可复制的实战指南:从 CTS 底层表到 LSMW、Variant、Layout、TABU、Query、SAPscript 全对象搬运

本文深入解析SAP系统中的Transport机制,将其视为可审计、可追溯的变更流水线。文章从CTS/Transport Organizer通用方法论和具体对象搬运手法两个层面展开,详细介绍了LSMW项目、程序Variant、屏幕/ALV Layout、表数据、ABAP Query、SAPscript和SO10标准文本等对象的传输策略。通过真实案例说明,代码对象往往能被正确传输,但"运行体验"和"业务配置"却常被遗漏,导致QAS测试正常而PRD环境异常。文章提供了一套可

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 178

Java排序

本文章主要为大家讲解了排序的相关知识,讲述了我们常用的七个大的排序比较有插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序和归并排序。在讲解他们的过程中我们为大家先介绍他们的原理是什么,再一步一步的实现他们,并将代码展示。此文章共2万字,是一篇超级详细的排序讲解!!!

xinhang10的博客 2578

LVGL 组件对齐方式说明

本文说明 LVGL(以 v8 为例)中常用的 lv_align_t对齐选项的含义与用法,对应界面设计工具里下拉列表中的以及等命名。

摸鱼专家 133

Java 实现文件名倒序排序的技术指南

通过本文的介绍,我们学习了如何在Java中实现文件名倒序排序,包括基本用法、使用Lambda表达式、处理特定类型的文件以及递归处理子目录中的文件。合理地使用这些技术可以帮助我们更高效地管理和操作文件。

Web安全工具库 860

MOS五类漏电流与优化策略

分析了五种主要漏电流机制:1)反偏结泄漏,由PN结热激发和隧

硬核科技 445

SAP ABAP OData 的四种开发方式

摘要:SAP开发中CDS视图转OData服务的四种方案演进:1)7.40+版本需手动映射数据源;2)7.50+可直接引用CDS视图自动生成服务;3)7.50+通过@OData.publish注解声明式发布;4)7.54+采用服务定义与绑定实现协议解耦。新版本推荐使用最新方案,旧系统可选传统方式,整体呈现开发简化、架构解耦的技术演进趋势。(150字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 867

诗词排班

h2{color:#0c3;font-size:16px;text-align:center;} h4{color:#900;} p{color:#06c;font-size:14px;text-indent;2em;} body{background-image:url('img/cibihuaigu.jpg');}; 《念奴娇 赤壁怀古》

只作为个人备忘录 737

odom反算成经纬度

这个转换系统能够将局部坐标(相对于原点的X, Y, Z坐标)转换回全球坐标系统。将局部里程计数据反算成经纬度坐标的过程涉及几个关键步骤,主要是将相对于某个局部参考点的坐标(例如在机器人、无人车或无人机的导航系统中使用的坐标)转换回全球GPS坐标系统(WGS-84经纬度)。为了能够将局部里程计数据转换为经纬度,首先需要知道局部坐标系统的原点(即参考点)在全球坐标系统中的位置。对于从里程计获得的每个局部坐标点,使用步骤2中设置的坐标转换系统将其转换为经纬度。使用转换模型将局部坐标转换为全球坐标。

如果想成为中心,那么就到中心去吧。 650

简单排序(java)

package test; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; impor...

weixin_30702887的博客 63

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java、修改选择排序法

重复地在当前数组中找到最大值,然后将这个最大值与该数组中的最后一个数进行交换。 编写一个测试程序,读取10个double型的数字,调用该方法,并显示排好序的数字。 package pack2; import java.util.Scanner; public class SelectSort { public static void main(String[] args) { try(Scanner input = new Scanner(System.in)) { d...

m0_62659797的博客 438

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

源码分析 - 数据的变更比对(一)

保存表单信息,记录与上一版本表单的区别,将需要关注的指定字段打上变更标记(颜色)

qq_36782325的博客 427

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

java中如何使用Flyway管理数据库的版本变更

随着项目的不断迭代,数据库表结构、数据都在发生着变化。甚至有的业务在多环境版本并行运行。数据为王的时代,管理好数据库的版本也成为了迫切的需要。如何能做到像 Git 之类的版本控制工具来管理数据库?Java 项目中常用 Flyway 和 Liquibase 来管理数据库版本。其中 Flyway 相对来说比较受欢迎。

变个魔术 550

深入理解 volatile:Java 可见性、禁止重排序与实践指南

本文从 Java 内存模型(JMM)出发,解释 volatile 的语义(可见性、禁止重排序、有限的原子性保障),结合源码/伪码与大量实例(如状态标志、双重检查锁、对象发布、性能对比),并与 synchronized、Atomic 包做对比,列出常见误区与实战建议,帮助你在工程中正确使用 volatile。

往者之不谏 来者犹可追 2092

在Oracle到GreatSQL迁移中排序规则改变引发的乱码问题分析及解决

Oracle 到 GreatSQL 迁移改排序规则引发乱码?本文深入分析根源,提供方案,助你快速解决,速来一探究竟!

GreatSQL2021的博客 1127

了解Java流、文件、io的概念(Java 从自学到就业 第7天)

记录学习Java的第七天 由于本渣渣是前端转行Java,所以编辑器的选择就直接用 webstorm 同公司的 idea 学习目标 了解Java流、文件、io的概念 学习内容 Java流(stream) Java文件(File) io Java流(stream) 一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。 Java 中的 流 ( Stream ) 表示来自 源 ( source ) 的一系列对象,它支持统计、求和、求平均值等聚合操作。 流具有以下

学Java的小前端的博客 182

41、冒泡排序改进版

#include&lt;iostream&gt; using namespace std; #define _CRT_SECURE_NO_WARNINGS int main(){ freopen("sort.in","r",stdin); freopen("sort.out", "w", stdout); int n = 0; cin &gt;&gt; n; int a[100

沿海奔跑的少年 299

排序问题

[code="java"] package corejava; import java.io.BufferedReader; import java.io.InputStreamReader; /** * (机能概要描述) * * * [变更履历] * 09.07.20.NICKLE NET 初版 * * * @author NICKLE...

wfwkiss的专栏 121

3分钟搞定Java List排序:快马平台快速原型开发

建议尝试类似原型开发时,可以先用自然语言把需求拆解清楚(就像我列出的6个关键点),这样AI生成的代码会更贴合预期。如果发现某些排序逻辑需要调整,比如想增加按价格区间筛选的功能,在平台上只需要补充描述就能立即获得新版本代码,这种迭代速度对教学演示或需求确认特别有帮助。这个技巧虽然与核心排序功能无关,但在实际演示时能显著提升观感——而这正是快马平台的优势所在,它能让你快速实现这些锦上添花的小优化。整个过程中最惊喜的是,平台生成的代码已经自带了合理的异常处理和格式优化,省去了很多细节调试时间。

SilverMoon18的博客 544

java读取zookeeper_zookeeper学习之java api查找并删除节点<五>

听说好兄弟 康要当爸爸了,哎哟,巧了,今天写点zk的读取数据,getchildren,zk的api套路相信你也熟悉了吧,总是有区分同步和异步的接口,获取节点数据也是一样的,我的套路也是一样的,柿子先拿软的捏。 来看看 最简单的get孩子,这边两个参数写的很明白,路径,和是否注册watch,watcher会被触发当删除节点或者删除,创建了子节点,返回结果不保证是排序的,其中不存在就抛出KeeperE...

weixin_32043813的博客 158

java程序6H到14min及80G内存到28G的优化过程(补充记录)

前言 前边有发过一篇代码优化的文章:记一次java程序从6H到30min的优化过程 大概描述的是一个java程序从最大内存至少80G,运行需要6H30min,到最大内存降到75G并且运行30min的优化过程。 但是实际上这个结果并不达标,基于现有的环境,期望的最大内存不能超过64G,并且在可以接收的处理时间内这个内存应该越小越好。 终于又经过了几天的奋战后,这个结果变成了28G和14min。(这里的时间,并非指单纯读文件的时间,而是整个程序所有业务的完整时间) 最终优化方案解析 达到上述效果的原因,主要是

程序员涂小哥的技术博客 1278

运行期重排序:内存系统的重排序

我是石页兄,如果这篇文章对您有帮助,或者有所启发的话,欢迎关注笔者的微信公众号【 架构染色 】进行交流和学习。您的支持是我坚持写作最大的动力。

BASK2311的博客 656
上一篇: Java 文字列のバイト数を取得する方法 Javaで,CSVファイルをDBへ書き込み
下一篇: jsp生成 文件下载 比如txt
xiaodanjava
博客等级 码龄15年 90粉丝 26原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值