java8--方法main--参数args--执行命令时给入参数

package stream;


import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Pattern;
import java.util.stream.Stream;

public class CountLongWords0320250104_2_0106 {
    public static void main(String[] args) throws IOException {
        Listcount(args[0],args[1],args[2]);  //for each遍历数组
        ListToStreamcount(args[0],args[1],args[2]);//转换成流后用filter方法lambda表达式传入条件过滤出
        ListToParallelStreamcount(args[0],args[1],args[2]);  //上一个的多线程版
        Streamcount(args[0],args[1],args[2]);  //以非字母分隔符分割后立刻转换成流,用filter过滤
        LinesStreamcount(args[0],args[1],args[2]);   //字符数量大于12的整行


    }
    //追加
    public static void FiWriter(long count, String outputFile2){
        FileWriter out = null;
        try {
            out =new FileWriter(outputFile2,true);
            out.write(String.valueOf(count));
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //覆盖
    public static void PriWriter(long count, String outputFile){
        PrintWriter out = null;
        try {
            out =new PrintWriter(outputFile);
            out.println(count);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        out.close();
    }

    public static void LinesStreamcount(String inputFile, String outputFile,String outputFile2){
        long count = 0;
        Path path = Paths.get(inputFile);
        try {
            try(Stream<String> lines = Files.lines(path)){
                count = lines.filter(w -> w.length() > 12).count();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        PriWriter(count,outputFile);
        FiWriter(count,outputFile2);
    }

    public static void Streamcount(String inputFile, String outputFile,String outputFile2){
        String contents = null;
        try {
            contents = new String(
                    Files.readAllBytes(
                            Paths.get(inputFile)),
                    StandardCharsets.UTF_8
            );
        } catch (IOException e) {
            e.printStackTrace();
        }
        Stream<String> words = Pattern.compile("\\PL+").splitAsStream(contents);
        long count = 0;
        count = words.filter(w->w.length() > 12).count();
        PriWriter(count,outputFile);
        FiWriter(count,outputFile2);

    }

    public static void ListToParallelStreamcount(String inputFile, String outputFile,String outputFile2){
        String contents = null;
        try {
            contents = new String(
                    Files.readAllBytes(
                            Paths.get(inputFile)),
                    StandardCharsets.UTF_8
            );
        } catch (IOException e) {
            e.printStackTrace();
        }
        List<String> words = Arrays.asList(contents.split("\\PL+"));
        long count = 0;
        count = words.parallelStream().filter(w -> w.length() > 12).count();
        PriWriter(count,outputFile);
        FiWriter(count,outputFile2);

    }

    public static void ListToStreamcount(String inputFile, String outputFile,String outputFile2){
        String contents = null;
        try {
            contents = new String(
                    Files.readAllBytes(
                            Paths.get(inputFile)),
                    StandardCharsets.UTF_8
            );
        } catch (IOException e) {
            e.printStackTrace();
        }
        List<String> words = Arrays.asList(contents.split("\\PL+"));
        long count = 0;
        count = words.stream().filter(w -> w.length() > 12).count();
        PriWriter(count,outputFile);
        FiWriter(count,outputFile2);

    }


    public static void Listcount(String inputFile, String outputFile,String outputFile2){
        String contents = null;
        try {
            contents = new String(
                    Files.readAllBytes(
                            Paths.get(inputFile)),
                    StandardCharsets.UTF_8
            );
        } catch (IOException e) {
            e.printStackTrace();
        }
        List<String> words = Arrays.asList(contents.split("\\PL+"));
        long count = 0;
        for (String w:
                words) {
            if (w.length()>12) count++;
        }
        PriWriter(count,outputFile);
        FiWriter(count,outputFile2);

    }


}

效果图:
控制台:

text文件:




ps:
我用idea运行报如下错误:

一些问题:https://www.cnblogs.com/used-conduit-onion/p/18656013

posted @   基础狗  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示