Java文件操作示例

题目

将一个txt文本中的数据读取,过滤,输出到新文件中

1、 取分数大于60分的学生

2、 排序

3、 输出名次,姓名,分数

文件格式

 

Java文件操作示例_第1张图片

import java.io.*;
import java.util.ArrayList;
import java.util.List;

/**
 * @author sun
 * @date 2020/8/11 18:40
 */
public class Sort {

    public static void main(String[] args) throws IOException {
        //创建文件对象
        File file = new File("D:\\test\\分数.txt");
        //创建缓存字符流
        BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
        String s = null;
        //定义存放名字的数组
        List nameList = new ArrayList<>();
        //定义存放成绩的数组
        List scoreList = new ArrayList<>();
        //查看文件件结构,读取文件信息存入list集合中
        while ((s = bufferedReader.readLine()) != null) {
            String[] arr = s.split("\\s+");
            nameList.add(arr[0]);
            scoreList.add(Integer.valueOf(arr[1]));
        }
        //关闭缓存字符流
        bufferedReader.close();
        //list转数组
        String[] names = nameList.toArray(new String[nameList.size()]);
        Integer[] scores = scoreList.toArray(new Integer[scoreList.size()]);

        //进行冒泡排序
        bubbleSort(scores, names);

        //打印信息
        for (int i = 0; i < scores.length; i++) {
            if (scores[i] > 60) {
                System.out.println(i+1 + ". 姓名:" + names[i] + " 分数:" + scores[i]);
            }
        }
        //定义输出文件存放路径
        String path="D:\\test\\";
        //创建输出结果文件
        File result=new File(path+"结果.txt");
        if(!result.exists()){
            result.createNewFile();
        }
        //创建字符输出流
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(path + result.getName()));
        for (int i = 0; i < scores.length; i++) {
            if(scores[i]>60){
                bufferedWriter.write((i+1+" "));
                bufferedWriter.write(names[i]);
                //空格
                bufferedWriter.write("\t");
                bufferedWriter.write(scores[i].toString());
                //换行
                bufferedWriter.newLine();
                bufferedWriter.flush();
            }
        }
        bufferedWriter.close();

    }

    /**
     * 定义对数组排序的方法
     * 冒泡排序
     */
    public static void bubbleSort(Integer[] arr, String[] str) {
        // 定义外层循环  控制排序趟数
        for (int i = 0; i < arr.length; i++) {
            // 定义内层循环  控制每一趟排序多少次
            for (int j = 0; j < arr.length - i - 1; j++) {
                // 比较相邻元素
                if (arr[j] < arr[j + 1]) {
                    // 下面的三行代码用于交换两个元素
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;

                    String type = str[j];
                    str[j] = str[j + 1];
                    str[j + 1] = type;
                }

            }
            System.out.print("第" + (i + 1) + "轮排序后:");
            // 每轮比较结束打印数组元素
            printArray(arr);
        }
    }


    /**
     * 定义打印数组方法
     */
    public static void printArray(Integer[] arr) {
        // 循环遍历数组的元素
        for (Integer integer : arr) {
            // 打印元素和空格
            System.out.print(integer + " ");
        }
        System.out.print("\n");
    }
}

控制打印结果

 

Java文件操作示例_第2张图片

输出文件格式

Java文件操作示例_第3张图片

你可能感兴趣的:(Java)