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运行报如下错误:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律