2021-5-29 文件读取、新语法

1、文件读取

1.1 扫描文件阅读器

Scanner fin = new Scanner(new FileReader("path路径"));
StringBuilder[] str; 
while(fin.hasNextLine()){//如果指针当前位置还有内容
    str[i] = fin.nextLine();//读取文件阅读器中的一行
}

1.2 扫描文件

Scanner fin = new Scanner(new File("path路径"));
StringBuilder[] str; 
while(fin.hasNextLine()){//如果指针当前位置还有内容
    str[i] = fin.nextLine();//读取文件阅读器中的一行
}

1.3 以分割字符串扫描文件

Scanner fin = new Scanner(new FileReader("path路径"));
fin.useDelimiter("www");

while(fin.hasNext()){
    System.out.println(fin.next());
}

1.4 Files(java 1.8)

该方法适用于按行处理数据,不关心顺序!

速度快,但是行的顺序不确定!

【注意】流stream,前面使用了,后面就没法使用!

Stream<String> lines = Files.lines("path路径");
lines.forEach(ele->{//ele获取的每行数据
    System.out.printf(ele);
});

//如果想让它有序处理文件中的各行,这两个案例不能同时运行。效率低
lines.forEachOrdered(ele->{//ele获取的每行数据
    System.out.printf(ele);
});

//当文件很大的时候,利用CPU的多核处理,并行执行多行
lines.paraller().forEachOrdered(
	System.out::println
);

//也可以将流转换成list集合-有序
//但是需要考虑内存是否足够,因为该方法将流stream中的所有内容全部加载到内存!可能会抛出java.lang.OutOfMemoryError
List<String> list = lines.collect(Collectors.toList());
//等效于
List<String> list1 = Files.readAllLines(Paths.get("path"),"utf8");

//在jdk11中,可以一次读入一个文件,但是不能超过2G,还要考虑jvm内存大小。
Files.readString(Paths.get("path"));
//如果没有jdk11,又想快速读取小文件。可以将所有内容以二进制的方式全部读出,转为String。
Byte[] bytes = Files.readAllBytes(Paths.get("path"));
String str = new String(bytes,StandardCharsets.UTF_8);

1.5 经典管道流的方式读取

try(BufferedReader br = new BufferedReader(new FileReader("path"))){
    br.readLine();//读取到一行
}catch(Exception e){}

//jdk8中可以这样写
try(BufferedReader br = Files.newBufferedReader(Paths.get("path"))){
    br.readLine();
}catch(Exception e){}

2、Java新语法

2.1 forEach 遍历Iterator

遍历流stream,所有除了map的集合!

但是可以遍历集合中的key集合或value集合!

ArrayList<Integer> arrList = new ArrayList();
arrList.add(1);
arrList.add(2);
arrList.add(3);

arrList.forEach(ele->{
    System.out.println(ele);
});

2.2 ::

访问类的构造器、实例方法、静态方法。不能访问属性!

3、函数式编程-Consumer

【待学习……】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值