基于子字符串以特定顺序输出文件 - Java

时间:2015-10-05 08:56:37

标签: java

我有一点问题。我正在创建一个小实用程序来订购大量数据,并且在如何处理它时遇到一些麻烦。我有文件读取,循环和输出。我可以看到子字符串值,但不知道如何根据子字符串值正确获取输出集。基本上希望根据子字符串以降序输出每一行。到目前为止,我的代码如下:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;

public class fedOrganiser {
    public static void main(String[] args) throws FileNotFoundException {
        //File Path
        Scanner fileIn = new Scanner(new File("C:\\Users\\xxx\\Desktop\\Files\\ex1.txt"));
        PrintWriter out = new PrintWriter("C:\\Users\\xxx\\Desktop\\Files\\filename.txt");
        while(fileIn.hasNextLine()==true) {//if no more lines to read, will return false
            //int orderBy = nextLine();
            System.out.println(fileIn.nextLine().substring(12,25));
            out.println(fileIn.nextLine() + "\n");
        }
        System.out.println("Completed");
        out.close();
    }
}

任何想法或方向都会很棒:)

编辑:我没有循环,而是按照此处将整个文件读入内存:

 String entireFileText = new Scanner(new File("C:\\Users\\xxx\\Desktop\\Files\\ex1.txt"))
                    .useDelimiter("\\A").next();
                  System.out.println(entireFileText);

但不确定如何按顺序排列?

每行的数据示例:

%[TIMESTAMP = 1] [EVENT = agentStateEvent1]

%[TIMESTAMP = 8] [EVENT = agentStateEvent8]

%[TIMESTAMP = 6] [EVENT = agentStateEvent6]

%[TIMESTAMP = 5] [EVENT = agentStateEvent5]

我想按照TIMESTAMP的顺序订购上述数据。

我希望输出。可以升序或降序。

%[TIMESTAMP = 1] [EVENT = agentStateEvent1]

%[TIMESTAMP = 5] [EVENT = agentStateEvent5]

%[TIMESTAMP = 6] [EVENT = agentStateEvent6]

%[TIMESTAMP = 8] [EVENT = agentStateEvent8]

2 个答案:

答案 0 :(得分:3)

至于提供的示例行,您可以使用ArrayList并对它们进行排序(正如Ankush Soni在评论中所建议的那样)

要做到这一点,
在循环之前创建ArrayList

ArrayList<String> lines = new ArrayList<>();  

将while()循环更改为,

while(fileIn.hasNextLine()==true) {
    lines.add(fileIn.nextLine());
}

之后使用ArrayList

Collections.sort()进行排序
Collections.sort(lines);

然后使用

将其写入PrinWriter
for(String s : lines){
        out.println(s + "\n");
}

答案 1 :(得分:2)

首先,将线条存储在有序地图中。

_comment.html.erb

循环浏览文件并存储行:

<%= comment.user.name %>

然后将排序的行按降序写入输出文件:

undefined method