2

JavaSE案例 04——IO流综合运用案例案例

 1 year ago
source link: https://blog.51cto.com/u_15316078/5717899
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

JavaSE案例 04——IO流综合运用案例案例

精选 原创

:Concerto 2022-09-28 02:30:11 ©著作权

文章标签 输出流 目标文件 字符输入 文章分类 Java 编程语言 阅读数240

将以下的打乱顺序的出师表重新进行排序,并输出到另一个文件!

一、先帝创业未半而中道崩殂,
五、然侍卫之臣不懈于内,
六、忠志之士忘身于外者,
二、今天下三分,
九、诚宜开张圣听
三、益州疲弊,
八、欲报之于陛下也,
七、盖追先帝之殊遇,
四、此诚危急存亡之秋也,

  1. 创建一个缓冲字符输入流对象包装字符输入流接通源文件
  2. 定义一个List集合用于存储每段文章
  3. 定义一个循环按照每行读取每段文章,存在List集合中去
  4. 对List集合中的每个元素按照首字符排序
  5. 创建一个缓冲字符输出流管道通向目标文件
  6. 遍历List集合中的每一个元素,通过缓冲字符输出流管道输出到目标文件
  • 用字符缓冲输入流采用每一行读取数据后,放到集合中
  • 集合的中的再进行遍历,并且用自定义方法按照首个字符排序
  • 难点就是return sizes.indexOf(s1.charAt(0))-sizes.indexOf(s2.charAt(0)),这个的意思是说遍历后取首字符,根据首字符的索引值(自定义另一个数组规定排序规则)进行数字比较,进行排序
  • 然后用缓冲字符输出流输出就可以啦
    2.代码
public class ExecDemo {
    public static void main(String[] args) {
        try(
                //释放资源,把资源放到这边来,后续它自动会关闭
                //1.创建一个缓冲字符输入流对象包装字符输入流接通源文件
                BufferedReader br = new BufferedReader(new FileReader("Day10Demo\\src\\csb.txt"));
                //5.创建一个缓冲字符输出流管道通向目标文件
                BufferedWriter bw = new BufferedWriter(new FileWriter("Day10Demo\\src\\csb2.txt"));
        ){
            //BufferedReader资源在上面,小括号中的
            //2.定义一个List集合用于存储每段文章
            List<String> datas = new ArrayList<>();
            //3.定义一个循环按照每行读取每段文章,存在List集合中去
            String line;
            while ((line=br.readLine())!=null){
                datas.add(line);
            }


            //4.自定义下排序规则
            List<Character> sizes = new ArrayList<>();

            Collections.addAll(sizes,'零','一','二','三','四','五','六','七','八','九');


            Collections.sort(datas, new Comparator<String>() {
                @Override
                public int compare(String s1, String s2) {
                    //indexOf获取元素在List集合中的索引,取传进来的第一个字符,然后获取在sizes集合中的索引得到数字进行比较
                    return sizes.indexOf(s1.charAt(0))-sizes.indexOf(s2.charAt(0));
                }
            });
//            //这边可以装一下的!
//            Collections.sort(datas, ( s1,  s2)->sizes.indexOf(s1.charAt(0))-sizes.indexOf(s2.charAt(0)));
//            System.out.println(datas);


            //BufferedWriter资源在上面,小括号中的


            //6.遍历List集合中的每一个元素,通过缓冲字符输出流管道输出到目标文件
            for (String data : datas) {
                bw.write(data);
                bw.newLine();
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
  1. 运行结果
    JavaSE案例 04——IO流综合运用案例案例 _目标文件

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK