随机读取文档中一行数据
需求
按照每行数据读取文件,然后随机获取其中一行
步骤
1.读文件,读成字符串集合
2.生成随机数,随机数应该对应集合的下标
3.根据随机数随机读取一行
代码
package com.lianxi1019;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.Random;
public class ReadOneLine {
public static void main(String[] args) throws IOException {
Path path = Paths.get("D:", "100", "200", "3c.txt");
// 注意是Paths,有s。注意不要写成“D:\100\200”这样的,严格的讲不用斜杠,虽然也能用
List<String> list = Files.readAllLines(path, StandardCharsets.UTF_8);
// JDK1.8以后可以省略第二个参数,默认是UTF-8编码
// 获取集合大小
int size = list.size();
// 获取随机数
int i = new Random().nextInt(size);
// 得到一行
String str = list.get(i);
// 输出
System.out.println("str = " + str);
}
}
笔记
得到一个需求的时候,重点应该是分解需求,也就是说在需求分析阶段做更多的工作,而写代码则是一个熟悉的过程。
用到的是:Files + Path
Files工具类,基于Path
Path是代替以前的File类
readAllLines方法适合小文件,如果文件太大就会发生OOM,即内存溢出错误。
这里拓展一下获取随机数的2种方法:
//取随机数0~9;
//1.
Random ra=new Random();
int a=ra.nextInt(10);
//2.
int number=(int)Math.random()*10;
还有Files.copy()和Files.move()方法,注意方法是原子化操作,即要么全做,要么不做。
分类:
日常练习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效