`

根据文件内容排序

    博客分类:
  • Java
阅读更多
package cn.xbmu.lib.jfly.test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;

/**
 * 文件intel.txt,内容如下:
 * 小王【空格】10000【回车】
 * 小强【空格】12345【回车】
 * 小张【空格】2342 【回车】
 * 小强【空格】1030 【回车】
 * 小周【空格】1020 【回车】
 * 小杨【空格】2342 【回车】
 * 请编写一程序从test.txt中读取数据,并按数字大小排序后写入另一文件sun.txt(写入格式同上)
 * @author JFly
 */
public class SortFileContentByNum {

    public static void main(String[] args) throws FileNotFoundException, IOException {
        BufferedReader br = new BufferedReader(new FileReader("C:/test.txt"));
        String line = null;
        int size = 0;
        ArrayList<String> al = new ArrayList<String>();
        while ((line = br.readLine()) != null) {
            if (!line.isEmpty()) {
                al.add(line);
                size++;
            }
        }
        br.close();
        
        String[] b = al.toArray(new String[size]);
        Arrays.sort(b, new Comparator<String>() {
             public int compare(String s1, String s2) {
                int i1 = 0;
                int i2 = 0;
                if (s1.matches(".+\\s+\\d+") && s2.matches(".+\\s+\\d+")) {
                    i1 = Integer.parseInt(s1.replaceAll("\\D", ""));
                    i2 = Integer.parseInt(s2.replaceAll("\\D", ""));
                }
                if(i1 == i2) {
                    String str1 = s1.replaceAll("\\d", "");
                    String str2 = s2.replaceAll("\\d", "");
                    return str1.compareTo(str2) > 0 ? -1 : 1;
                }
                return i1 < i2 ? -1 : 1;
            }
        });
        
        BufferedWriter bw = new BufferedWriter(new FileWriter("c:/result.txt"));
         for(String s : b) {
            bw.write(s);
            bw.write("\r");
        }
        bw.flush();
        bw.close();
    }
}

 

分享到:
评论

相关推荐

    对文件内容排序

    在IT领域,对文件内容进行排序是一项常见的任务,特别是在数据处理和分析中。在这个场景下,我们关注的是如何对大小不超过$G$的文件内容按照字符单位进行排序。这个过程通常涉及编程语言如C,以及操作系统如Linux。...

    C++对文件排序并输出CSV文件

    在本项目中,可能需要自定义比较函数以根据特定数据字段进行排序,这通常通过重载`operator或提供一个`Comparator`函数对象来实现。 CSV(Comma-Separated Values)文件是一种通用的文件格式,用于存储表格数据。在...

    python对txt文件内容排序并输出

    标题 "python对txt文件内容排序并输出" 涉及的知识点主要集中在使用Python编程语言处理文本文件,包括读取文件内容、数据排序以及将排序结果写入新文件。这里我们将详细探讨这些方面。 首先,Python提供了丰富的内...

    Python-sorta帮助你对文件进行排序

    "sorta"是一个专门用于帮助用户对文件内容进行排序的工具。本文将深入探讨Python中的文件操作,以及如何利用类似"sorta"的工具来高效地对文件进行排序。 首先,了解Python的基本文件操作是必要的。在Python中,我们...

    p3p4播放器文件排序

    2. **按文件大小排序**:如果存储空间有限,用户可能会根据文件大小进行排序,优先处理或删除大文件。 3. **按日期排序**:按照文件的创建或修改时间排序,这对于追踪最近添加或更新的媒体内容非常有用。 4. **...

    fso文件排序演示(fso).

    - **内容管理系统**:在CMS后台中,管理员可能需要按照不同的标准(如最后修改时间、文件类型等)对资源进行排序。 - **日志分析工具**:对日志文件按时间戳排序,方便快速查找特定时间段的日志记录。 综上所述,...

    多文件读写操作,内容排序

    这里我们关注的是“多文件读写操作”以及“内容排序”,这两个知识点在数据处理、数据分析和日志管理等场景中非常常见。下面将详细阐述这两个主题,并结合“GDP”这个标签进行举例说明。 1. **多文件读写操作**: ...

    简单外存文件的排序操作

    但由于未提供具体文档内容,我们只能根据一般外存排序的知识点进行解释。实际应用中,开发者需要结合具体场景,如数据特性、硬件条件等因素,选择或设计合适的外存排序算法,以实现高效的数据处理。

    plist文件排序输出

    可以使用`NSBundle`的`pathForResource:ofType:`方法获取文件路径,然后通过`NSData`的`dataWithContentsOfFile:`方法读取文件内容。 2. **解析Plist数据**: 读取到的数据可能是XML格式或二进制格式,需要根据`...

    python排序文件,将文件夹中内容进行排序。

    排序文件,将图片和xml文档进行排序。

    文件解压排序工具,可以直接解压没有排序的比较乱的压缩文件

    它不仅能够执行基本的解压操作,还能在解压过程中根据某种规则(可能是文件类型、创建日期、文件大小等)对解压出的文件进行排序,使得用户在解压后可以迅速找到所需的内容。这种智能化的解压方式对于处理大量的无序...

    Java读取文件并对其排序后重新写入文件

    首先,我们需要导入Java的`java.io`包,该包包含了处理输入/输出流的类,如`BufferedReader`和`PrintWriter`,以及`java.util`包中的`Scanner`和`ArrayList`,用于读取和存储文件内容。 1. **读取文件**: 使用`...

    排序程序并读写文件

    写入前,确保使用'w'模式时不会覆盖已有内容,如果需要保留原文件内容,可使用'a'模式追加。 4. **关闭文件**:每次操作后,记得调用`close()`函数关闭文件,释放系统资源。为了防止意外,可以使用`with`语句,它会...

    文件排序DELPHI源码

    要对文件内容进行排序,首先需要将文件内容读取到内存中,这通常涉及使用TFileStream的Read方法。 2. **数据结构与算法**:文件排序通常涉及到数据结构,如数组、链表或集合,以及排序算法,如快速排序、归并排序、...

    Python文件操作及多路归并排序

    文本文件内容排序功能: 每行是一条记录,每行可以有多列,列间按预定义的分隔符分隔; 可以按单列或多列组合排序,每列的顺序可以设置为反序或者正序; 列的数据类型可以是字符串、整数、浮点数,比较排序时按指定...

    java对大数据量文件内容的多线程读取和排序.doc

    Java 对大数据量文件内容的多线程读取和排序 Java 对大数据量文件内容的多线程读取和排序是非常复杂的任务,涉及到多个方面的技术,包括文件读取、多线程处理、排序算法等。本文将对该问题进行详细的分析和解决方案...

    java对大数据量文件内容的多线程读取和排序.pdf

    Java 对大数据量文件内容的多线程读取和排序 在处理大数据量文件内容时,多线程读取和排序是非常重要的。下面我们将讨论如何使用 Java 对大数据量文件内容进行多线程读取和排序。 首先,我们需要生成一个随机的...

    jSort页面内容排序

    jSort页面内容排序是一种在网页开发中常见的需求,主要用于优化用户体验,使用户能更方便地找到所需信息。jSort是一个JavaScript库,它提供了一种简便的方式来实现动态的、交互式的页面内容排序。在这个专题中,我们...

    一个简单的读取二进制文件并进行排序

    在IT领域,处理二进制文件是常见的任务之一,特别是在数据存储、文件...由于没有具体的文件内容,我们无法提供关于这个文件的具体信息。如果需要进一步的帮助,比如解析这个文件或解决特定问题,需要提供更多的上下文。

    qt文件读取,数据排序

    QTextStream提供了方便的方法,如readLine()或&gt;&gt;运算符,以解析文件内容: ```cpp QTextStream in(&file); while (!in.atEnd()) { QString line = in.readLine(); // 处理每一行的数据 } ``` 描述中提到的“数据...

Global site tag (gtag.js) - Google Analytics