如何在Java中对文件数据进行排序和重新排列?

时间:2015-04-29 03:38:47

标签: java loops text fileinputstream

我有一个以这种格式保存的txt文件:

import java.util.Scanner;
public class Schedule {
            public static void main(String[] args)
            {
                String [][]arr = new String[4][2];
                arr[0][0] = "COSC 1337";
                arr[1][0] = "HIST 1301";
                arr[2][0] = "MATH 1302";
                arr[3][0] = "PHIL 1320";
                arr[0][1] = "Wednesdays 12pm-3pm";
                arr[1][1] = "Fridays 8am-11am";
                arr[2][1] = "Mondays 6pm-9pm";
                arr[3][1] = "Saturdays 10am-1pm";

                Scanner in = new Scanner(System.in);
                System.out.println("Enter a Course");
                String userInput = in.nextLine();
                for (int i = 0; i< 4 ; i++)
                {
                    if (userInput.equalsIgnoreCase( arr[i][0]))
                    {
                        System.out.println("classes are on: " + arr[i][1]);
                        return;
                    }

                }
                 System.out.println("Invalid Course");

            }


}

现在我需要遍历这个输入文件并根据第一个编码值保存一个已排序和重新排列的输出文件,这个值在输入文件中可能会出现多次?对于例如在这个示例文件中,我在随机位置不止一次806PYZnmNaw4h0wh8fyWDQ 0 0 0 0 0 1 0 bvu13GyOUwhEjPum2xjiqQ 0 0 0 1 0 0 0 kDUEcqnK0MrjH9hcYHDKUw 1 0 1 0 0 0 0 806PYZnmNaw4h0wh8fyWDQ 1 0 1 0 0 0 0 bvu13GyOUwhEjPum2xjiqQ 0 1 1 1 1 0 0 tvCT2yT3bLlpU2crUt0zJw 1 0 0 1 0 0 0 806PYZnmNaw4h0wh8fyWDQ 1 1 1 0 0 0 0 9Ify25DK87s5_u2EhK0_Rg 0 0 0 1 0 0 0 bvu13GyOUwhEjPum2xjiqQ 0 1 0 1 0 0 0 806PYZnmNaw4h0wh8fyWDQ 1 0 0 0 0 0 0 zk0SnIEa8ju2iK0mW8ccRQ 0 0 0 0 1 0 0 AMuyuG7KFWJ7RcbT-eLWrQ 0 0 0 1 0 0 0

到目前为止,我尝试过: private static final String Path =“newuserfeature.txt”;

806PYZnmNaw4h0wh8fyWDQ

1 个答案:

答案 0 :(得分:2)

如果您只是按照恰好是字符串的第一个字段对行进行排序,那么您可以这样做:

Path oldFile = Paths.get("/path/to/my/file");
Path newFile = Paths.get("/path/to/my/newFile");

List<String> lines = Files.readAllLines(oldFile);
Collections.sort(lines);
Files.write(newFile, lines);

其中:

1:将所有行加载到字符串列表中,
2:按字符串排序(这是你在一天结束时想要的)
3:将行存储在另一个文件中

当您按第一个字段进行字符串排序时,您不需要将每一行分解为其列。